Hash :: check在Laravel 5中不起作用,总是返回false?

时间:2019-02-25 06:18:30

标签: php laravel laravel-authentication

我使用哈希检查来比较用户输入的当前密码和存储在数据库(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总是返回false(“哈希不匹配”)

我将变量放在哈希检查中

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

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

谢谢。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:-1)

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

尝试一下

if (Hash::check($user->password, $request->password))