Laravel RateLimiter/ дроссельная заслонка, увеличивающая минуты спада
В Laravel вы можете ограничивать определенные запросы. Например, вы можете ограничивать количество попыток входа в систему максимум 5 попытками в минуту с помощью промежуточного программного обеспечения или RateLimiter:
RateLimiter::for('login', function (Request $request) {
return (new Limit('login', '5', 1))
->by($request->email.$request->ip());
});
В этом примере кода
'5'
означает максимальное количество запросов в минуту, а
1
означает минуты спада (каждый раз при достижении лимита пользователь будет заблокирован на 1 минуту).
Однако как увеличить
decayMinutes
каждый раз, когда лимит был достигнут? Например, как бы вы удваивали эту сумму каждый раз?
1 ответ
Информация: я использую Breeze с Laravel 8 , который устанавливает
app\Requests\Auth\LoginRequest
. В этом файле я вношу изменения.
Были две важные строчки кода для настройки попыток Laravel Breeze и времени спада. Если вы просто хотите их выследить:
Попытки
RateLimiter::tooManyAttempts($this->throttleKey(), 5)
Время распада
RateLimiter::hit($this->throttleKey());
RateLimiter::tooManyAttempts
(вы можете видеть) принимает число в качестве второго аргумента (см. выше
5
) это сколько попыток кому-то разрешено.
RateLimiter::hit
принимает второй аргумент, который не показан, я смог увеличить свой до 5 минут, добавив его в:
RateLimiter::hit($this->throttleKey(), 300);