Laravel 密码哈希不正确

Laravel password hash is incorrect

我正在尝试在 Laravel 中更新密码,密码正在更新,但是当我尝试登录时 it shows wrong details,我不确定我在这里做错了什么。

public function passwordupdate(Request $request, $id)
{
    $user = User::find($id);

    // Column updating with incorrect Hash
    $user->password = Hash::make($request->password);
    $user->setRememberToken(Str::random(60));
    $user->active = 0; // This value is updating correctly
    $user->save();

    return response()->json(['msg' => 'password updated']);
}

正如我提到的,我的请求发布了一个空值,所以我添加了 Ajax 代码来找出原因。

Ajax

$('.update_password').on('click', function (e) {
    console.log('Update password clicked!')
    e.preventDefault();
    $.ajax({
        type: "POST",
        dataType: 'json',
        data: $(this).serialize(),
        url: "/users/" + $('#user_pwid').val(),
        headers: {
            'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
        },
        success: function (data) {
            if (data.msg) {
                $('#response').empty();
                $(".toast").toast('show');
                $('#response').append(data.msg);
            }
        }
    });
});

View/Blade

<form method="post" id="policy-form">
    @csrf
    <input type="hidden" value="">
    <select name="name" id="user_pwid" class="form-control user_pwid border border-secondary border-dark" required>
        <option selected value="">SELECT USER</option>
        @foreach($users as $user)
            <option value="{{$user->id}}"> {{$user->name}}</option>
        @endforeach
    </select>
    <input type="password" name="password" id="password">
    <button type="click" class="btn btn-danger btn-sm update_password rounded text-center" value="{{$user->id}}"
            id="update-password"></button>
</form>

$request->password 是否真的有预期的密码?你确定你没有在双哈希密码的模型上写一个修改器吗?

您创建自己的密码重置控制器而不是使用 Laravel 附带的控制器是否有充分的理由?另外 - 你 真的 不想将密码发回给 JSON 中的用户。

试试这个:

控制器代码:

public function passwordupdate(Request $request,$id) {
    $user = User::find($id);
    if(!is_null($user)){
        $user->password = Hash::make($request->password);
        $user->setRememberToken(Str::random(60));
        $user->active =0;
        $user->save();   
        return response('success'); 
    }
    else{
        return response('failed'); 
    }
}

Ajax代码:

$('#update-password').on('click', function(e) {
    e.preventDefault();
    $.ajax({
    headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content'),
    },
    type: "post",
    url: "/users/" + $('#user_pwid').val(),
    data :{
        password : $('#password').val(),

    },
    success: function (data) {
        if(data == 'success'){
            alert('password changed successfully');
            $('#response').empty();
            $(".toast").toast('show');
            $('#response').append(data);
        }
        else{
            alert('failed');
        }
    },
    });
});

尝试一下它会起作用