【发布时间】:2020-04-05 09:18:57
【问题描述】:
所以我有一个表单,它使 XHR 到外部 api 以获取令牌,然后提交到 url,该 url 在我们后端的“/update”处调用我们的数据库。我们正在尝试通过使用机架攻击节流阀来限制一个人可以使用该表单提出的请求数量。因此,例如在两次尝试后达到限制时,第三次应该给出 429 错误,然后重定向到我们的页面/429。到目前为止我有这个:
throttle '/update', {
limit: 2,
period: 60
} do |req|
next nil unless req.path == '/update' && req.put?
req.ip
end
那么对于我们正在做的油门响应:
Rack::Attack.throttled_response = lambda do |env|
headers = {
'Location' => '/429'
}
[302, headers]
end
代码确实有效并返回 429,但即使我们在标头中有 Location,重定向也不会发生。此外,我们还有一个端点,我们在其中执行GET,并且相同的响应将用户成功重定向到/429。
那么如何在使用 Rack Attack ruby on rails 库发出put 或post 请求时重定向用户?还有另一种重定向用户的方法吗?任何帮助将不胜感激。
【问题讨论】:
标签: ruby-on-rails ruby rackattack