1

次のようなスロットルがあるとします。

throttle('emails/ip', :limit => 5, :period => 24.hours) do |req|
  if req.path == '/users/check_email_availability' && req.post?
    req.ip
  end
end

誰かが制限された後もそのリンクにアクセスしようとするとどうなりますか? 彼らはさらに24時間ブロックされますか?それとも、gem は最後の 5 つのリクエストのみを確認しますか? 彼らはいつ抑制されなくなりますか?

4

1 に答える 1

1

値を返すすべてのリクエストtruthyは、リクエストがブロックされている場合でも、タイムスタンプとともにキャッシュされます。リクエストがブロックされているかどうかを判断するには、時間範囲rack-attack内のリクエストをカウントします。:period

したがってrack-attack、 はブロックされません:period。代わりに、内のすべてのリクエストをカウントし:period、このカウントが より大きい場合:limit、リクエストはブロックされます。

于 2016-10-25T20:27:42.913 に答える