大家好,现在有一个统计用户登陆错误超过 5 次显示验证码的需求,这个除了用 session 外还有没有其他更好的办法啊?本人小白一个,求各位大哥大姐教育啊。。。
不是基于 session,用 redis记录ip和登陆失败次数
.靠谱操作我觉得就两个,要么存到内存数据库 redis,要么持久化到数据库,效率低点。本质市一样的。
private
def inc_ip_count
Rails.cache.write "login/#{request.remote_ip}", ip_count + 1, :expires_in => 60.seconds
end
def ip_count
Rails.cache.read("login/#{request.remote_ip}").to_i
end
def require_recaptcha?
ip_count >= 3
end
https://github.com/chloerei/writings/blob/master/app/controllers/user_sessions_controller.rb
推荐一个 gem https://github.com/kickstarter/rack-attack
奥,这个是拿来 block 的,显示验证码不知道能不能实现。