限制每个用户的请求数量(使用机架攻击和设计)
Throttle # of requests per user (with rack-attack & devise)
我正在使用 https://github.com/kickstarter/rack-attack/#throttles 来限制对某些 url 的请求。
机架攻击文档显示了如何通过请求 IP 或请求参数进行限制,但我想做的是限制每个用户的请求。因此,无论 IP 是什么,用户都应该能够在特定时间范围内发出不超过 n 个请求。
我们使用 devise 进行身份验证,我想不出一种简单的方法来根据请求唯一标识用户。
我应该将用户 ID 存储在 session/cookie 中吗?也许是一个 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
我正在使用 https://github.com/kickstarter/rack-attack/#throttles 来限制对某些 url 的请求。
机架攻击文档显示了如何通过请求 IP 或请求参数进行限制,但我想做的是限制每个用户的请求。因此,无论 IP 是什么,用户都应该能够在特定时间范围内发出不超过 n 个请求。
我们使用 devise 进行身份验证,我想不出一种简单的方法来根据请求唯一标识用户。
我应该将用户 ID 存储在 session/cookie 中吗?也许是一个 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