在我的应用程序中,用户的帐户将由其他人为其创建,因此我想向他们发送密码重置电子邮件,以便他们可以设置其密码并登录。问题是我不希望这些链接会在60分钟后过期,例如默认的密码重置电子邮件。现在,我可以更改到期时间,但是我希望将常规密码重置保持在60分钟,但是欢迎电子邮件链接要么永不过期,要么经过很长一段时间才会过期。
如何在不实施第二个令牌系统的情况下进行此操作,我似乎对此一无所获。
我想我也可以允许用户在令牌过期时重新发送欢迎电子邮件,但这很烦人。
答案 0 :(得分:0)
有效期限在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();
}