我正在使用https://github.com/kickstarter/rack-attack/#throttles限制对某些URL的请求。
机架攻击文档显示了如何通过请求IP或请求参数进行限制,但是我想做的是对每个用户进行限制请求。因此,无论IP,用户在特定时间范围内最多只能发出n个请求。
我们使用devise进行身份验证,我想不出一种简单的方法来根据请求唯一标识用户。
我应该在会话/ cookie中存储用户ID吗?也许是uniq哈希?您认为最好的做法是什么?
弄清楚了。Devise已经在会话中存储了用户ID。代码如下所示:
Rack::Attack.throttle('something', limit: 6, period: 60.seconds) do |req|
req.env['rack.session']["warden.user.user.key"][0][0] if some_condition?
end
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句