Как получить количество попыток входа в систему в Laravel?

Ларавель версии 5.7 -

В настоящее время я пытаюсь захватить количество попыток входа в систему. В документации Laravel нет руководства по этому поводу. Но я думаю, что приближаюсь к самостоятельному поиску ответа, отслеживая все вызываемые методы.

В любом случае, моя цель - отобразить количество «попыток входа / максимальное количество попыток входа» до блокировки.

В Auth\LoginController я могу легко получить количество максимальных попыток и даже установить предпочтительное количество максимальных попыток:

protected $maxAttempts = 3;

Большой. Поэтому я создаю функцию для получения сведений о попытке входа в систему:

public function getCurrentAttempts() {
    $limiter = $this->limiter();

    $login_attempts = array(
        // gets the number of current login attempted
        'currentAttempts' => $limiter->hit('user'),

        // get the number of max attempts allowed
        'maxAttempts' => $this->maxAttempts(),

        // return 1 or 0 if current login attempts reached max attempts
        'locked' => $this->limiter()->tooManyAttempts('user', $this->maxAttempts())
    );

    return view('auth.login')->withLoginAttempts(
        $login_attempts
    );
}

Пожалуйста, обрати внимание:

$this->limiter()->hit(key) ‹‹‹ ожидает ключ. Я действительно не знаю, какой ключ он ожидает. Помочь кому-нибудь? Я набрал «пользователь», и по какой-то причине мне возвращается правильное количество попыток. Но правильно ли это? Это тот самый "ключ", который ожидает $limiter->hit()? Разве «ключ» не имеет ничего общего с запросом?

Другие вещи, которые следует отметить: достаточно приятно, из LoginController я могу легко получить значение $maxAttempts, просто $this->maxAttempts(), это действительно приятно. Но как насчет количества текущих попыток входа в систему? Разве не было бы идеально иметь его в одном и том же месте? Это то, что я пытаюсь получить.


person El Sordo    schedule 13.11.2018    source источник


Ответы (1)


Прочитав документацию Laravel несколько раз, я начал пробовать различные классы, уже встроенные в фреймворк, которые позволили мне достичь моей цели (получить текущее количество попыток входа в систему)

В LoginController мы должны use Illuminate\Http\Request;, а затем путем внедрения метода Request $request можно зафиксировать в методе.

Затем я смог получить 'throttleKey', который мне нужен, вот так: в теле метода LoginController $this->limiter()->hit($this->throttleKey($request));

person El Sordo    schedule 17.11.2018
comment
Спасибо, я искал именно это! В моем случае, чтобы получить количество оставшихся попыток: $nb_attempts_left = $this->limiter()->retriesLeft($this->throttleKey($request), $this->maxAttempts); - person David; 13.08.2020