Срок действия определяется в auth.php
. Вы можете просто определить другую конфигурацию с другим временем истечения:
'passwords' => [
'users' => [
'provider' => 'users',
'table' => 'password_resets',
'expire' => 60,
],
'users_welcome' => [
'provider' => 'users',
'table' => 'password_resets',
'expire' => 120,
],
],
И когда вы генерируете почту, вы можете использовать этого нового брокера:
\Illuminate\Support\Facades\Password::broker('users_welcome')->sendResetLink($user->email);
Чтобы проверить, не истек ли токен, Laravel использует created_at
сброса и определенную продолжительность истечения:
/**
* Determine if the token has expired.
*
* @param string $createdAt
* @return bool
*/
protected function tokenExpired($createdAt)
{
return Carbon::parse($createdAt)->addSeconds($this->expires)->isPast();
}
https://github.com/laravel/framework/blob/5.8/src/Illuminate/Auth/Passwords/DatabaseTokenRepository.php#L139