当我在Laravel框架中注册新用户时,我目前是这样做的:
转储输入数据,
(Note: 保留了HTML标签)
// Creating a new user
$user = new User;
$user->firstname = $data['firstname'];
$user->lastname = $data['lastname'];
$user->email = $data['email'];
$user->password = bcrypt($data['password']);
$user->save();
这很好用,我能够登录应用程序。然而,我希望用户在设置页面中有一个更改密码的选项。为了实现这一点,我使用了相同的技术,使用
$newPass = bcrypt($response->new_password);
我更新了用户字段的内容,但是在这之后我不能登录。我正在使用Laravel内置的身份验证服务进行注册/登录。
我做错了什么?应该用另一种方法吗?
我还尝试了将当前密码bcrypt处理,但是得到的哈希值与数据库中存储的完全不同。
这太令人困惑了...
以下是控制器代码:
// Validation
$this->validate($request, [
'email' => 'email',
'password' => 'min:8|confirmed',
'current_password' => 'required',
]);
// Getting the user ID
$userId = Auth::id();
// Dummy hack check, change later.
if(!Auth::attempt(['id' => $userId, 'password' => $request->current_password]))
{
return redirect('settings')->with('alert','current password is wrong.');
}
// Everything is validated and ok to proceed
if($request->email)
{
$data['email'] = $request->email;
}
if($request->password)
{
$data['password'] = bcrypt("helloworld");
}
$user = User::where('id',$userId)->update($data);
dd($data);
转储输入数据,
(Note: 保留了HTML标签)
+request: ParameterBag {#40 ▼
#parameters: array:5 [▼
"_token" => "JQIIuCjiKQmbK0X5zCM6czYD1vIoh4PGjLO4qrFm"
"email" => "testing@gmail.com"
"password" => "thisisnewpass"
"password_confirmation" => "thisisnewpass"
"current_password" => "helloworld"
]
}
$response->new_password
并查看它是否有任何额外的空格。 - BrokenBinary