Есть странная проблема с регулированием входа в систему 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
Документы Laravel делятся деталями встроенного дросселирования
https://laravel.com/docs/5.7/authentication#login-throttling
как вы можете прочитать IP и адрес электронной почты комбинация используется для отслеживания попыток входа в систему
Я представляю себе, что если несколько пользователей входят в систему с одного IP-адреса, они не блокируются и не блокируются.
Вам нужно изменить это, чтобы использовать ID или аналогичный, если вы хотите, чтобы он действовал по-другому
Других решений пока нет …