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);
Другие вопросы по тегам