Как работает рельсовая стойка дроссельной заслонки?
Скажем, у меня есть газ, как это:
throttle('emails/ip', :limit => 5, :period => 24.hours) do |req|
if req.path == '/users/check_email_availability' && req.post?
req.ip
end
end
Что произойдет, если кто-то попытается получить доступ к этой ссылке после того, как его удушат? Будут ли они заблокированы еще на 24 часа? Или драгоценный камень будет только смотреть на их последние 5 запросов? Когда они становятся неуправляемыми?
1 ответ
Каждый запрос, по которому вы возвращаете truthy
значение, кэшируется с отметкой времени, даже когда запрос заблокирован. Чтобы определить, заблокирован ли запрос или нет rack-attack
считает запросы в течение :period
временной интервал.
Так rack-attack
не блокирует для :period
, Вместо этого он считает все запросы в пределах :period
и если этот счет больше, чем :limit
, запрос заблокирован.