我想爲Laravel 5.3應用程序設置Doctrine 2身份驗證。我使用Laravel生成的Auth控制器,所以它不是我自己的自定義實現。我做了一些小的修改(即使用Doctrine將用戶持久保存到數據庫中)並且註冊工作正常,但是當我嘗試登錄時,它會使驗證失敗。Laravel身份驗證hasValidCredentials失敗
我已經與調試器階梯通過與它似乎是一致失敗的功能hasValidCredentials(位於供應商/ laravel /框架/ SRC /照亮/認證/ SessionGuard.php)詳述如下:
/**
* Check the given plain value against a hash.
*
* @param string $value
* @param string $hashedValue
* @param array $options
* @return bool
*/
public function check($value, $hashedValue, array $options = [])
{
if (strlen($hashedValue) === 0) {
return false;
}
return password_verify($value, $hashedValue);
}
作爲參考,是我對$值和$ HASHEDVALUE值如下:
$值= 「測試器」;
$ HASHEDVALUE = 「$ 2Y $ 10 $ ZSLRE3LAVA8myaH8mu6TNeumQxHdmKRbv/zZdFQeDujZ8JolshTOu」;
變量的屏幕截圖按我的最後XDebug的會議顯示了這些變量的確切類型:
的$ HASHEDVALUE是加密版本(使用bcrypt)的密碼「測試儀「所以我知道憑據是100%正確的,但是當執行命中password_verify時,它總是計算爲false,然後hasValidCredentials檢查失敗。
所以我知道哈希密碼是足夠長的時間,並存儲在數據庫中。我發現$ hashedValue返回雙引號,這可能是一個問題嗎?
不管我無法登錄的會話衛隊類的嘗試函數總是失敗的hasValidCredentials始終返回false,我很難倒作爲憑證是準確的。
想知道是否有人有任何想法,如何解決這個問題?
感謝
看來,下面的計算結果爲true: 'password_verify( '祕密密碼', '$ 2Y $ 10 $ EnIi90KP.0BqCVJgK21BrO3xzArxCZaiAPaUebCw.K2Xw71QOCZv2');' – liamjnorman
請注意,我的應用程序的關鍵是base64編碼。這可能會導致生成散列時出現問題嗎? – liamjnorman