我在Laravel 5.1中遇到了一些密码重置过程的问题
步骤产生:
-
忘记密码页面(输入密码,重置链接将作为电子邮件发送)
-
来自电子邮件的用户将点击类似于http://domain.com/password/reset/的链接表格将显示输入新密码并重新输入密码
在那个形式我使用相同的形式给这里https://laravel.com/docs/5.1/authentication#resetting-passwords "Sample Password Reset Form"
我刚刚注意到隐藏的电子邮件字段没有填充
<input type="email" name="email" value="{{ old('email') }}">
因为我使用laravel的默认方法,它调用 -
public function getReset($token = null)
{
if (is_null($token)) {
throw new NotFoundHttpException;
}
return view('auth.reset')->with('token', $token);
}
很明显,没有电子邮件变量传递给视图,它在提交后命中 postReset
public function postReset(Request $request)
{
$this->validate($request, [
'token' => 'required',
'email' => 'required|email',
'password' => 'required|confirmed|min:6',
]);
$credentials = $request->only(
'email', 'password', 'password_confirmation', 'token'
);
$response = Password::reset($credentials, function ($user, $password) {
$this->resetPassword($user, $password);
});
switch ($response) {
case Password::PASSWORD_RESET:
return redirect($this->redirectPath())->with('status', trans($response));
default:
return redirect()->back()
->withInput($request->only('email'))
->withErrors(['email' => trans($response)]);
}
}
因此,当我使用laravel 5.1文档中的默认指南时,主要问题是电子邮件字段没有填充 .
我应该像令牌一样传递电子邮件参数,还是我错过了什么?