2017-10-18 116 views
0

我想在更新运行之前验证用户的旧密码以确认密码更改。但我不断得到一个false回应。Laravel 5.4 hash :: check()返回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); 
} 
+0

可以轻松地检查,如:'$ check_password =哈希::支票($请求 - > OLD_PASSWORD,$用户>密码); dd($ check_password);' –

+3

我相信'Hash :: check'已经返回boolean ...与'=== 1'比较无论如何都会返回false。你的函数只应该'返回Hash :: check($ password,$ current);' –

回答

2

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

您的方法与=== 1的结果进行比较,无论如何返回false。 ===也比较类型,它比较(布尔)true/false和(永远不会是true)的(整数)1。

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

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

请参考下面的例子:

$user = Auth::user(); 

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

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