ruby-on-rails - 限制每个用户的请求数量(使用机架攻击和设计)

标签 ruby-on-rails ruby devise throttling rackattack

我正在使用 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/

相关文章:

ruby-on-rails - 如何让专家政策更干?

ruby-on-rails - 允许用户使用 Devise - Rails 4 更改密码

ruby-on-rails - 使用 Devise 登录后重定向

ruby-on-rails - 设计 after_sign_in_path_for 有效,但不会发生重定向

ruby-on-rails - 如何使用 nginx 配置 phusion passenger 以支持 rails 中的 ssl?

javascript - Turbolinks 不工作 - 而是加载页面两次

ruby-on-rails - 数组 will_paginate rspec 的未定义方法 total_pages'

ruby - 覆盖 session Controller 防止使用自定义 View

ruby-on-rails - Rails has_many STI

ruby-on-rails - 在表单中使用隐藏字段是否不安全?