2017-10-18 132 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 
    } 
相關問題