【问题标题】:Laravel 5.2 Change user password functionalityLaravel 5.2 更改用户密码功能
【发布时间】:2016-05-29 18:28:05
【问题描述】:

我正在使用 laravel 5.2 中包含的身份验证:

https://laravel.com/docs/5.2/authentication#included-routing

我想为经过身份验证的用户实现“更改密码”功能,我有两个选择:

  1. 我可以使用包含的 '/password/reset' 路由,虽然不是最佳但还可以。但它只在用户未登录时有效。我可以让它对经过身份验证的用户也有效吗?

  2. 我可以在视图中创建一个“输入新密码”表单,并在 UsersController 中创建一个 updatePassword 方法。但是我需要检查提交的密码是否不为空,这意味着用户想要更改它,然后应用验证规则,然后加密并更新它。这是正确的做法吗?任何示例将不胜感激。

【问题讨论】:

    标签: php laravel login laravel-5


    【解决方案1】:

    我认为#2 是要走的路,它只是用户设置表单中的另一个字段。在我的应用中,它看起来像这样:

    $user->update($request->except('password'));
    if($request->get('password') != ""){
        $user->password = Hash::make($request->get('password'));
    }
    $user->save();
    

    我进行了一项特殊检查,以确保我不会从空白字段更新密码。添加验证以适应口味。

    【讨论】:

    • 是的,我会选择那个选项。谢谢。
    【解决方案2】:

    您可以在模型中设置 set 属性,例如

     public function setPasswordAttribute($value)
      {
        $this->attributes['password'] = bcrypt($value);
    }
    

    在编辑方法中:

        if (empty($request->password)) {
            $data = $request->except('password');
        } else {
            $data = $request->all();
        }
    
        $user = $this->userRepository->update($data, $id);
    

    【讨论】:

      【解决方案3】:

      我已经在我的用户文件中实现了更改密码,如下所示

      public function postReset(Request $request)
          {   
                  $this->validate($request, [
                          'password' => 'required|confirmed','email' => 'required|email',
      
                  ]);
                  $user = User::findOrFail($id);
                  $input = $request->input();
                  //Change Password if password value is set
                  if ($input['password'] != "") {
                     //dd(bcrypt($input['password']));
                     $input['password'] = bcrypt($input['password']);
                  }
                  $user->fill($input)->save();
          }
      

      【讨论】:

        猜你喜欢
        • 2015-12-11
        • 2019-03-10
        • 2023-03-31
        • 2016-05-13
        • 2019-10-11
        • 2016-08-30
        • 2017-01-27
        • 2016-04-12
        • 2017-01-27
        相关资源
        最近更新 更多