【发布时间】:2020-08-04 22:59:47
【问题描述】:
我正在尝试在 Laravel 7 中创建一个密码更新表单,即当前登录用户可以用来更改密码的表单。
我正在使用默认的 laravel 身份验证包,只是在它的基础上构建。
我的更新功能似乎没有将新用户密码保存到数据库中。我已确认我的新/旧密码不同。提交表单后,我仍然可以使用旧密码登录,但新密码不起作用。没有错误(我开启了开发模式)。数据库正在获取新的时间戳,并且哈希值正在发生变化。
/**
* Update current user's password
* @param Request $request
* @return JsonResponse
*/
public function updatePassword(Request $request)
{
$validator = Validator::make($request->only(['current_password', 'password', 'password_confirmation']), [
'current_password' => ['required'],
'password' => ['required', 'string', 'min:10', 'confirmed']
]);
$user = User::findOrFail(Auth::user()->id);
$validator->after(function ($validator) use ($request, $user) {
if (!Hash::check($request->current_password, $user->password)) {
$validator->errors()->add('current_password', 'The current value does not match our records.');
}
})->validate();
//echo 'current password: '. $request->current_password . '<br>';
//echo 'new password: ' . $request->password . '<br>';
$currentPassword = $request->current_password;
$user->password = Hash::make($request->password);
$user->setRememberToken(Str::random(60));
$user->save();
Auth::logoutOtherDevices($currentPassword);
return response()->json(['success' => true, 'msg' => 'Password updated!']);
}
【问题讨论】:
-
你可以在 $currnetPassword = $request->current_password; 之后调试 ($request->password)结果为空?
-
结果如预期。新密码。
标签: laravel authentication eloquent laravel-7