1

我使用哈希检查来比较用户输入的当前密码和存储在数据库中的当前密码(Bcrypt)

这是我的源代码

    $user = User::findOrFail($request->id);
    if (Hash::check($request->password, $user->password)) { 
       $user->fill([
        'password' => Hash::make($request->newPassword)
        ])->save();

       $request->session()->flash('success', 'Password changed');
        // return redirect()->route('your.route');
       echo "Hash match";

    } else {
        $request->session()->flash('error', 'Password does not match');
        // return redirect()->route('your.route');
        echo "Hash does not matched";
    }

我的问题是哈希:检查总是返回假(“哈希不匹配”)

我像这样将变量放入哈希检查中

Hash::check(new password plain text, bcrypt value in db)

在调用哈希检查之前。我尝试打印变量以调查它为什么不起作用。我发现新密码的纯文本已经发送,并且我也已经从数据库中获得了 bcrypt 密码。一切看起来都很好,应该可以工作。我不知道我的错误是什么。我在这个网站上关注了很多主题来解决我的问题,因为我试过它对我不起作用。任何人,请帮助我。

谢谢你。

4

2 回答 2

0

如果您将其与 auth 提供的默认登录控制器一起使用,则无需使用它。它由 laravel 自己自动完成。

于 2019-02-25T06:54:57.380 回答
-1

您使用了错误的参数顺序。

试试这个

if (Hash::check($user->password, $request->password))
于 2019-02-25T06:58:11.103 回答