首页 > 解决方案 > Laravel 7 中重置密码的路径

问题描述

我正在使用 Laravel 7 中的自定义密码重置选项。当用户单击重置密码按钮(在她/他的电子邮件的收件箱中)时,用户将被重定向到密码重置链接。这是我的链接

http://localhost/LaraTest/public/reset/5199667639cfc4f5ea624f4c18dbf7e8-vJcnLSH92vAj1IlnV3j7phT8zBtcbX0gSDbjXX37oFsuEM560oAiehZ4oVd0?email=basish%40gmail.com

这是生成链接的代码

$token1=   md5($fp_email);
    $token2 =   Str::random(60);
    $fp_token = $token1."-".$token2;
//some more codes here
$link = 'localhost/LaraTest/public/reset/' . $fp_token . '?email=' . urlencode($fp_email);

//$link is sent to user as email 

路线(经过一些研究)

Route::get('reset/{tokenname}{email}','LoginController@resetpassword');

控制器

public function resetpassword(Request $request){
     
     return view('resetpassword');
     
}
  1. 我将如何定义我的路线?我有点困惑,因为我的链接同时包含密码重置令牌电子邮件 ID
  2. 重定向到新密码表单后,我将如何从上面的链接中检索密码重置令牌电子邮件 ID

标签: laravel

解决方案


你的路线应该是:

Route::get('reset/{tokenname}','LoginController@resetpassword');

然后是实际的处理程序:

public function resetpassword(Request $request, $token){     
     $email = $request->email;
     return view('resetpassword', compact('token', 'email');    
}

然后在您看来,您可以拥有:

    <input type="hidden" name="email" value="{{$email}}" />
    <input type="hidden" name="token" value="{{$token}}" />

并且您的实际密码重置处理程序可能会在如下路线中定义:

Route::post('reset', 'LoginController@doPasswordReset');

并且方法体将是(从laravel 源代码的某些部分借用的代码):

public function doPasswordReset(Request $request){   
     $validatedRequest = $request->validate([
            'token' => 'required',
            'email' => 'required|email',
            'password' => 'required|confirmed|min:8',
        ]);  
     $email = $request->email;
     $token = $request->token;
     $broker = app(PasswordBrokerManager::class);
     
     $response = $broker()->reset(
            $validatedRequest, function ($user, $password) {
                 // save new password here
            }
        );

        return $response == Password::PASSWORD_RESET
                    ? // Reset response?
                    : // Reset failed response?
}

这将确保 Laravel 在进行实际密码重置之前可以通过提供的电子邮件和密码验证用户。


推荐阅读