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

时间:2015-07-30 08:52:34

标签: ruby-on-rails ruby devise throttling rackattack

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

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

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

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

1 个答案:

答案 0 :(得分:11)

想出来。设计已在会话中存储用户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