Laravel 更改密码重置特定令牌的令牌持续时间

Mat*_*eks 5 laravel laravel-5 laravel-authorization

在我的应用程序中,用户的帐户将由其他人为他们创建,因此我想向他们发送密码重置电子邮件,以便他们可以设置密码并登录。问题是我不希望这些链接在此之后过期60 分钟类似于默认密码重置电子邮件。现在我可以更改过期时间,但我希望常规密码重置保持在 60 分钟,但欢迎电子邮件链接永不过期或在很长一段时间后过期。

我如何在不实施第二个令牌系统的情况下进行此操作,我似乎找不到任何关于此的信息。

我想我也可以允许用户在他们的令牌过期时重新发送欢迎电子邮件,但这有点烦人。

Tho*_*mas 7

过期时间在 中定义auth.php。您可以简单地定义另一个具有不同到期时间的配置:

'passwords' => [
    'users' => [
        'provider' => 'users',
        'table' => 'password_resets',
        'expire' => 60,
    ],
    'users_welcome' => [
        'provider' => 'users',
        'table' => 'password_resets',
        'expire' => 120,
    ],
],
Run Code Online (Sandbox Code Playgroud)

当您生成邮件时,您可以使用该新代理:

'passwords' => [
    'users' => [
        'provider' => 'users',
        'table' => 'password_resets',
        'expire' => 60,
    ],
    'users_welcome' => [
        'provider' => 'users',
        'table' => 'password_resets',
        'expire' => 120,
    ],
],
Run Code Online (Sandbox Code Playgroud)

为了检查令牌是否过期,Laravel 使用created_at重置和定义的过期时间:

\Illuminate\Support\Facades\Password::broker('users_welcome')->sendResetLink($user->email);
Run Code Online (Sandbox Code Playgroud)

https://github.com/laravel/framework/blob/5.8/src/Illuminate/Auth/Passwords/DatabaseTokenRepository.php#L139