如何在Laravel中检查密码重置令牌是否已过期

时间:2020-07-30 06:16:06

标签: laravel

我想使用令牌重置密码,该令牌通过电子邮件发送,如果该令牌为真,请转到更改密码页面,该怎么办? 我的控制器:

 function validateReminderToken($token)
{
    $token = DB::table('password_resets')
        ->where('token','=',$token)
        ->where('created_at','>',Carbon::now()->subHours(2))
        ->first();
    return view('Admin/Page/Email/resetPassword'.compact('token'));

}

这是我的观点:

<h1>this is test</h1>
<a href="{{$token}}">click</a>

这是我的溃败

        Route::get('/validate/{token}','resetPasswordController@validateReminderToken')->name('validate');



   

1 个答案:

答案 0 :(得分:0)

所以一般的做法是:

  1. 单击reset按钮时,在password_rests表中创建一个新条目。
  2. 使用包含Email的操作按钮将reset URL发送给用户。
  3. 如果用户单击此按钮,请redirectreset page,但前提是令牌仍然有效(您可以检查令牌匹配的password_resets条目的created_at)。
  4. 让用户reset拥有其密码,或向error授予令牌已失效的功能。

@ edit1

您将需要进行如下设置,以便您的邮件能够正常运行:

  1. 创建一条路由,将您发送到重置页面:(例如,您已经拥有validate的路由
  2. 在您的邮件中,您需要将按钮的链接设置为所需的页面:href="{{route('validate', $token)}}"
  3. 如果用户单击按钮,将调用您的validateReminderToken()方法。
  4. 确保不要用要从数据库中移出的条目覆盖发送的令牌