Laravel 5.6 изменение адреса электронной почты сбрасывает дроссель входа в систему

Есть странная проблема с регулированием входа в систему laravel. Я установил переменные:

 public $maxAttempts = 5;
 public $decayMinutes = 3;

в Auth / LoginController.php и переопределите функцию sendLockoutResponse следующим образом:

protected function sendLockoutResponse(Request $request) {
  $seconds = $this->limiter()->availableIn(
      $this->throttleKey($request)
  );

  $minutes = floor($seconds / 60);
  $seconds = $seconds % 60;

  return back()->with('authError', 'Wait ' . $minutes . ' minutes and ' . $seconds . ' seconds.');
}

Когда я пытаюсь выполнить 5 неудачных попыток входа с неправильными учетными данными, я вижу сообщение AuthError на странице. И если я продолжу с тем же адресом электронной почты, я продолжу видеть уменьшение секунд и минут. Но если я изменю адрес электронной почты, вся дроссельная заслонка будет сброшена. У меня еще 5 неудачных попыток.

Мой вопрос: если laravel определяет попытки входа пользователя по IP-адресу и использует кеш для их опроса, почему изменение электронной почты сбрасывает дроссель входа в систему?

PS мои значения .env:

BROADCAST_DRIVER=log
CACHE_DRIVER=file
SESSION_DRIVER=file
SESSION_LIFETIME=120
SESSION_SECURE_COOKIE=false
QUEUE_DRIVER=database

person moonwalker    schedule 19.11.2018    source источник


Ответы (1)


Документы Laravel делятся деталями встроенного троттлинга.

https://laravel.com/docs/5.7/authentication#login-throttling

как вы можете прочитать, комбинация IP и адреса электронной почты используется для отслеживания попыток входа в систему

Я предполагаю, что если несколько пользователей входят в систему с одного и того же IP-адреса, все они не будут заблокированы / задушены

Вам нужно будет изменить это, чтобы использовать ID или аналогичный, если вы хотите, чтобы он действовал по-другому.

person Josh    schedule 19.11.2018