在Laravel 7中重置密码的路线
我正在使用Laravel 7中的自定义密码重置选项。当用户单击重置密码按钮(在其电子邮件的收件箱中)时,用户将重定向到密码重置链接。这是我的链接在Laravel 7中重置密码的路线,laravel,Laravel,我正在使用Laravel 7中的自定义密码重置选项。当用户单击重置密码按钮(在其电子邮件的收件箱中)时,用户将重定向到密码重置链接。这是我的链接 http://localhost/LaraTest/public/reset/5199667639cfc4f5ea624f4c18dbf7e8-vJcnLSH92vAj1IlnV3j7phT8zBtcbX0gSDbjXX37oFsuEM560oAiehZ4oVd0?email=basish%40gmail.com 下面是生成链接的代码 $token1=
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
路线(经过一些研究)
控制器
public function resetpassword(Request $request){
return view('resetpassword');
}
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}}" />
方法主体将是(代码借用了
这将确保Laravel可以在进行实际密码重置之前,通过提供的电子邮件和密码验证用户。到目前为止您尝试了什么?@KamleshPaul我还没有。因为我没有其他的线索,我会在问题中提到它自己,而不是向我们展示你是如何生成链接的(我认为这是可行的),为什么不向我们展示你迄今为止在定义路线方面所做的努力呢?您可能可以从该路由中的
$request->email
访问电子邮件参数,并使用该参数获取用户及其密码重置令牌。你试过了吗?@KamleshPaul我用routes
和controller
更新了我的答案,我现在明白了。令牌值为5199667639cfc4f5ea624f4c18dbf7e8-vJcnLSH92vAj1IlnV3j7phT8zBtcbX0gSDbjXX37oFsuEM560oAiehZ4oVd0?email=basish%40gmail.com
。我想将令牌和电子邮件分开,比如令牌=*5199667639cfc4f5ea624f4c18dbf7e8-vJcnLSH92vAj1IlnV3j7phT8zBtcbX0gSDbjXX37oFsuEM560oAiehZ4oVd0*和电子邮件=basish%40gmail.com
<input type="hidden" name="email" value="{{$email}}" />
<input type="hidden" name="token" value="{{$token}}" />
Route::post('reset', 'LoginController@doPasswordReset');
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?
}