Laravel 更改特定令牌的密码重置令牌持续时间
Laravel Change Password Reset Token duration for specific tokens
在我的应用程序中,用户的帐户将由其他人为他们创建,因此我想向他们发送密码重置电子邮件,以便他们可以设置密码并登录。问题是我不想这些 link 会像默认密码重置电子邮件一样在 60 分钟后过期。现在我可以更改过期时间,但我希望常规密码重置保持在 60 分钟,但欢迎电子邮件 link 要么永不过期,要么在一段时间后过期。
如何在不实施第二个令牌系统的情况下执行此操作,我似乎找不到任何相关信息。
我想我也可以允许用户在令牌过期时重新发送欢迎电子邮件,但这有点烦人。
有效期在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();
}
在我的应用程序中,用户的帐户将由其他人为他们创建,因此我想向他们发送密码重置电子邮件,以便他们可以设置密码并登录。问题是我不想这些 link 会像默认密码重置电子邮件一样在 60 分钟后过期。现在我可以更改过期时间,但我希望常规密码重置保持在 60 分钟,但欢迎电子邮件 link 要么永不过期,要么在一段时间后过期。
如何在不实施第二个令牌系统的情况下执行此操作,我似乎找不到任何相关信息。
我想我也可以允许用户在令牌过期时重新发送欢迎电子邮件,但这有点烦人。
有效期在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();
}