首页 文章

Laravel 5.4 hash :: check()返回false

提问于
浏览
0

我想在更新运行之前验证用户的旧密码以确认密码更改 . 但我不断得到一个回应 .

从表单中获取提供的“旧密码”

$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

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

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

    你的函数应该只返回 Hash::check($password, $current);

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

    请参考以下示例:

    $user = Auth::user();
    
        $oldPass = $request->input('old_password');
    
        if(Hash::check(  $oldPass ,  $user->password) )
        {
            // is Match Password
        }
        else
        {
            // not Match
        }
    

相关问题