我正在使用 https://github.com/kickstarter/rack-attack/#throttles限制对某些网址的请求。
机架攻击文档展示了如何通过请求 IP 或请求参数进行限制,但我想做的是限制每个用户的请求。因此,无论 IP 是什么,用户都应该能够在特定时间范围内发出不超过 n 个请求。
我们使用 devise 进行身份验证,我想不出一种简单的方法来根据请求唯一标识用户。
我应该在 session /cookie 中存储用户 ID 吗?也许是一个 uniq 哈希?您对实现这一目标的最佳方式有何看法?
最佳答案
想通了。 Devise 已将用户 ID 存储在 session 中。代码看起来像这样:
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
关于ruby-on-rails - 限制每个用户的请求数量(使用机架攻击和设计),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31719239/