Laravel 5.4 hash :: check()返回false

时间:2017-10-18 12:41:15

标签: laravel laravel-5

我想在更新运行之前验证用户的旧密码以确认密码更改。但我不断收到false回复。

从表格

获取提供的“旧密码”
$old_password = $request->old_password;

获取当前用户

$user = $this->getUser($request->id);

根据保存在数据库中的密码检查密码

dd($this->checkPassword($request->old_password, $user->password));
  

在浏览器中返回false。


protected function getUser($id)
{
    return User::find($id);
}


protected function checkPassword($password, $current)
{
    return (bool) (Hash::check($password, $current) === 1);
}

2 个答案:

答案 0 :(得分:2)

Hash::check已经返回一个布尔值。

您的方法与=== 1的结果进行比较,无论如何都会返回false。 ===也比较了类型,它将(boolean)true / false与(整数)1进行比较,它永远不会为真。

您的功能应该返回Hash::check($password, $current);

protected function checkPassword($password, $current)
{
    return Hash::check($password, $current);
}

答案 1 :(得分:0)

请参考以下示例:

    $user = Auth::user();

    $oldPass = $request->input('old_password');

    if(Hash::check(  $oldPass ,  $user->password) )
    {
        // is Match Password
    }
    else
    {
        // not Match
    }