【问题标题】:Throttle # of requests per user (with rack-attack & devise)限制每个用户的请求数(使用机架攻击和设计)
【发布时间】:2015-10-21 13:02:07
【问题描述】:

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

Rack-attack 文档展示了如何通过请求 IP 或请求参数来限制,但我想做的是限制每个用户的请求。因此,无论 IP 是什么,用户都应该能够在特定时间范围内发出不超过 n 个请求。

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

我应该将用户 ID 存储在会话/cookie 中吗?也许是一个独特的哈希?您认为最好的方法是什么?

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-26
    • 2012-02-02
    • 1970-01-01
    • 2011-10-27
    • 1970-01-01
    相关资源
    最近更新 更多