如何在Laravel中正确更新密码?

时间:2017-12-29 13:40:15

标签: php laravel laravel-5.4

我有一个Laravel应用程序,我使用自定义用户身份验证。现在我正在尝试允许用户更新他们的密码,我遇到的问题是我需要检查旧密码,如果该字段不是空的,我想检查新密码是否与密码匹配重复提交,如果确实如此,那么在这里更新它是我在控制器中的代码:

$newpass = $request->input('password');
$passrepeat = $request->input('passwordRepeat');

if ($oldPass = $request->input('oldPassword') != null)
{
  if (Hash::check($request->oldPassword, auth()->user()->password)){
       if ($newpass = $passrepeat){

                 $password = bcrypt($request['password']);
                 $user->password = $password;

       }
  }
}

然后我更新它:

$user->update();

但我的代码似乎甚至没有检查密码字段。当我检查oldPassword字段时,我显然犯了错误。我可以尝试的选项太多,所以我决定问一个问题。

  

Laravel 5.4

2 个答案:

答案 0 :(得分:2)

来自the docs

  

check方法允许您验证给定的纯文本字符串是否与给定的哈希对应。但是,如果您使用的是Laravel附带的LoginController,则可能不需要直接使用它,因为此控制器会自动调用此方法:

if (Hash::check('plain-text', $hashedPassword)) {

https://laravel.com/docs/5.5/hashing#basic-usage

答案 1 :(得分:0)

只需替换这两行

  $password = bcrypt($request['password']);
  $user->password = $password;

使用

 $user->password = password_hash($request->password, PASSWORD_DEFAULT);