Laravel使用哈希从表单更新用户密码

时间:2018-05-19 09:59:06

标签: database laravel authentication account

所以我有这个表格有3个字段(用户电子邮件,密码和密码确认)。此表单发布到一条路线,该路线将我带到以下控制器

public function updateUser($id, Request $request){

    //validate post data
    $this->validate($request, [
        'email' => 'required|email',
        'password' => 'required|confirmed|min:6',
    ]);

    $request->all();

    $request['email'] = $request['email'];
    $request['password'] = Hash::make($request['password']);


    $postData =  [$request['email'], $request['password']];

    User::find($id)->update($postData);

    //store status message
    Session::flash('success_msg', 'User details updated successfully!');

    return redirect()->route('admin.user');

}

问题是,这段代码根本没有更新我的数据库,虽然它没有给我任何错误。

基本上我要做的是我想让管理员更改管理面板中的默认帐户详细信息。安装应用程序后,播种器会创建默认管理详细信息。 (此应用程序是单用户 - 仅限管理员)

谢谢大家!

3 个答案:

答案 0 :(得分:1)

public function updateUser($id, Request $request){

    //validate post data
    $this->validate($request, [
        'email' => 'required|email',
        'password' => 'required|confirmed|min:6',
    ]);

    $input = $request->all();

    $input['email'] = $request['email'];
    $input['password'] = Hash::make($request['password']);

    User::find($id)->update($input);

    //store status message
    Session::flash('success_msg', 'User details updated successfully!');

    return redirect()->route('admin.user');

    }

答案 1 :(得分:1)

您必须传递数组的键才能识别列。

public function updateUser($id, Request $request){
    //validate post data
    $this->validate($request, [
        'email' => 'required|email',
        'password' => 'required|confirmed|min:6',
    ]);
    $userData = $request->only(["email","password"]);
    $userData['password'] = Hash::make($userData['password']);
    User::find($id)->update($userData);
    Session::flash('success_msg', 'User details updated successfully!');
    return redirect()->route('admin.user');
}

答案 2 :(得分:0)

您可以通过执行此操作

在用户模型中默认设置密码哈希
    public function setPasswordAttribute($value)
    {
        $this->attributes['password'] = Hash::make($value);
    }

比更新用户,只需这样做

User::find($id)->update($request->only('email','password'));