Rails Rails 限制失败次数这个功能怎么做?

evan · 2012年11月05日 · 最后由 evan 回复于 2012年11月09日 · 3169 次阅读

比如连续输错 10 次,30 分钟不让再输入之类的。。。

其实我是来找 gem 的。。

数据库存最后的输入时间和输错次数,输入正确就清 0

其实这个逻辑很简单,这么简单的需求又何苦要去折腾一个 gem 呢

最直接的,先写个 if。。。eslif。。。end,然后想办法把这个 if 独立出来,按照你的业务逻辑写就可以了,没有必要 gem,浪费了。

你需要两个功能。 一个是输入错误次数的统计,正确之后清零。 一个是一段时间不让登陆。

简单做法可以写到 session 里面,错误就 session[:error] += 1

session[:error] >= 10 时 reject_todo_something,正确就 session[:error] = 0

首先,这个功能需要满足什么样的需求? 是防止密码暴力破解?用户账户安全性要求怎么样? 不同的安全性要求,需要设计不同的方案。从锁住用户密码,到只用 session 防君子不防小人。 这个需要先弄清楚。

扔到一个 key-value cache 里去做统计 则可以实现 IP,IP 段,用户名等等的匹配

@linjunhalida 防止密码暴力破解

需要 登录 后方可回复, 如果你还没有账号请 注册新账号