Как работает рельсовая стойка дроссельной заслонки?

Скажем, у меня есть газ, как это:

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, запрос заблокирован.

Другие вопросы по тегам