Laravel 6: сброс пароля дросселя - PullRequest
1 голос
/ 17 февраля 2020

В laravel 6 у брокера паролей теперь есть следующее для сброса пароля газа (https://github.com/laravel/framework/blob/6.x/src/Illuminate/Auth/Passwords/PasswordBroker.php#L58)

public function sendResetLink(array $credentials)
{
    // First we will check to see if we found a user at the given credentials and
    // if we did not we will redirect back to this current URI with a piece of
    // "flash" data in the session to indicate to the developers the errors.
    $user = $this->getUser($credentials);

    if (is_null($user)) {
        return static::INVALID_USER;
    }

    if (method_exists($this->tokens, 'recentlyCreatedToken') &&
        $this->tokens->recentlyCreatedToken($user)) {
        return static::RESET_THROTTLED;
    }

    // Once we have the reset token, we are ready to send the message out to this
    // user with a link to reset their password. We will then redirect back to
    // the current URI having nothing set in the session to indicate errors.
    $user->sendPasswordResetNotification(
        $this->tokens->create($user)
    );

    return static::RESET_LINK_SENT;
}

Однако, когда я повторно отправляю сброс пароля, почему нет ' t сброс пароля сброшен - я все еще получаю уведомления о сбросе, поступающие через?

Я заметил, что метод recentlyCreatedToken не существует в TokenRepositoryInterface в версии 6.x https://github.com/laravel/framework/blob/6.x/src/Illuminate/Auth/Passwords/TokenRepositoryInterface.php

Но был добавлен в версии 7.x

https://github.com/laravel/framework/blob/master/src/Illuminate/Auth/Passwords/TokenRepositoryInterface.php

Это только особенность v7.x или мне нужно что-то сделать, что мне не хватает?

1 Ответ

2 голосов
/ 20 февраля 2020

Регулирование сброса пароля работает в Laravel 6.x, но по какой-то причине вам необходимо вручную установить параметр throttle в файле конфигурации config/auth.php:

    'passwords' => [
        'users' => [
            'provider' => 'users',
            'table' => 'password_resets',
            'expire' => 60,
            'throttle' => 60, // Allows a user to request 1 token per 60 seconds
        ],
    ],

DatabaseTokenRepository определяет значение по умолчанию для времени газа до 60 секунд. Но когда DatabaseTokenRepository инициализируется в PasswordBrokerManager , он проверяет файл конфигурации и, если значение не найдено, устанавливает время регулирования в 0 (означает отключение газа).

Также необходимо добавить сообщение строка в resources/lang/en/passwords.php, чтобы показать пользователю понятное сообщение об ошибке:

'throttled' => 'You have requested password reset recently, please check your email.',

PS Не забудьте добавить в кэш конфигурации sh после редактирования файла конфигурации с помощью php artisan config:clear.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...