在爲站點設置「更改密碼」功能時,我有一個輔助密碼輸入(,在需要再次輸入密碼之前,您可以更改密碼)。如何比較Symfony 3中的密碼(Bcrypt哈希)?
我需要能夠檢查用戶當前的密碼(使用Bcrypt進行散列處理)與輸入的密碼。
在我的控制器動作,我有:
$currentPassword = $request->request->get('password');
$encoder = $this->container->get('security.password_encoder');
$encodedPassword = $encoder->encodePassword($user, $currentPassword);
if($encodedPassword == $user->getPassword()) { // these don't ever match.
// ...
}
encodePassword(...)
產生已輸入密碼的摘要,但它是不一樣的保存密碼(明文相同),所以我認爲正在應用不同的鹽,因此產生不匹配。
由於Bcrypt將salt合併到密碼摘要中,因此我沒有將它保存在任何地方。
如何檢查輸入的明文密碼是否與Symfony 3中存儲的Bcrypt摘要相匹配?我不使用FOSUserBundle
。
太棒了。非常感謝。我不知何故在文檔中錯過了這一點。 – 121c
很高興幫助@Chris。 PS:有時可以檢查類方法(使用ides快捷鍵)來查找對未來有用的內容:-) –