比如连续输错 10 次,30 分钟不让再输入之类的。。。
其实我是来找 gem 的。。
数据库存最后的输入时间和输错次数,输入正确就清 0
其实这个逻辑很简单,这么简单的需求又何苦要去折腾一个 gem 呢
最直接的,先写个 if。。。eslif。。。end,然后想办法把这个 if 独立出来,按照你的业务逻辑写就可以了,没有必要 gem,浪费了。
你需要两个功能。 一个是输入错误次数的统计,正确之后清零。 一个是一段时间不让登陆。
简单做法可以写到 session 里面,错误就 session[:error] += 1,
session[:error] += 1
当 session[:error] >= 10 时 reject_todo_something,正确就 session[:error] = 0
session[:error] >= 10
session[:error] = 0
首先,这个功能需要满足什么样的需求? 是防止密码暴力破解?用户账户安全性要求怎么样? 不同的安全性要求,需要设计不同的方案。从锁住用户密码,到只用 session 防君子不防小人。 这个需要先弄清楚。
扔到一个 key-value cache 里去做统计 则可以实现 IP,IP 段,用户名等等的匹配
@linjunhalida 防止密码暴力破解