每个用户的请求数量(具有机架攻击和设计)

ddg*_*dgd 8 ruby throttling ruby-on-rails devise rackattack

我正在使用https://github.com/kickstarter/rack-attack/#throttles来限制对某些网址的请求.

机架攻击文档显示了如何根据请求IP或请求参数进行限制,但我想要做的是每个用户的限制请求.因此,无论IP如何,用户都应该能够在特定时间范围内发出不超过n个请求.

我们使用设计进行身份验证,我想不出根据请求唯一识别用户的简单方法.

我应该在会话/ cookie中存储用户ID吗?也许是uniq哈希?对于这样做的最佳方式,您有什么看法?

ddg*_*dgd 13

弄清楚了.设计已在会话中存储用户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
Run Code Online (Sandbox Code Playgroud)