在不使用 Laravel make:auth 的情况下创建密码重置功能
Creating Password Reset Function without using Laravel make:auth
我正在处理 Laravel 5.6。我正在使用 JWT 身份验证,并且我创建了自己的身份验证控制器。
这是我在 AuthController 的恢复方法,
public function recover(Request $request)
{
$user = User::where('email', $request->email)->first();
if (!$user) {
$error_message = "Your email address was not found.";
return response()->json(['success' => false, 'error' => ['email'=> $error_message]], 401);
}
try {
Password::sendResetLink($request->only('email'), function (Message $message) {
$message->subject('Your Password Reset Link');
});
} catch (\Exception $e) {
$error_message = $e->getMessage();
return response()->json(['success' => false, 'error' => $error_message], 401);
}
return response()->json([
'success' => true, 'data'=> ['message'=> 'A reset email has been sent! Please check your email.']
]);
}
在 postman 中,如果我执行 recover 方法,我会收到此消息
{
"success": false,
"error": "Route [password.reset] not defined."
}
我该如何处理。谢谢!
如果你没有 运行 make:auth
你没有定义路由,正如错误本身所说。
尝试在 routes/web.php
中定义以下路由
Route::post('/pwdreset', 'AuthController@recover')
->name('password.reset');
您需要为路线命名,在本例中为 password.reset
。在您的 routes.php
(或您定义它们的任何地方)调用 name
方法:
Route::post('/password/reset', 'AuthController@recover')->name('password.reset');
我正在处理 Laravel 5.6。我正在使用 JWT 身份验证,并且我创建了自己的身份验证控制器。
这是我在 AuthController 的恢复方法,
public function recover(Request $request)
{
$user = User::where('email', $request->email)->first();
if (!$user) {
$error_message = "Your email address was not found.";
return response()->json(['success' => false, 'error' => ['email'=> $error_message]], 401);
}
try {
Password::sendResetLink($request->only('email'), function (Message $message) {
$message->subject('Your Password Reset Link');
});
} catch (\Exception $e) {
$error_message = $e->getMessage();
return response()->json(['success' => false, 'error' => $error_message], 401);
}
return response()->json([
'success' => true, 'data'=> ['message'=> 'A reset email has been sent! Please check your email.']
]);
}
在 postman 中,如果我执行 recover 方法,我会收到此消息
{
"success": false,
"error": "Route [password.reset] not defined."
}
我该如何处理。谢谢!
如果你没有 运行 make:auth
你没有定义路由,正如错误本身所说。
尝试在 routes/web.php
Route::post('/pwdreset', 'AuthController@recover')
->name('password.reset');
您需要为路线命名,在本例中为 password.reset
。在您的 routes.php
(或您定义它们的任何地方)调用 name
方法:
Route::post('/password/reset', 'AuthController@recover')->name('password.reset');