我已經構建了一個登錄表單,但沒有註冊表單,所以我將用戶詳細信息直接放到sql數據庫中。
我發現當用戶嘗試登錄時,cakephp會自動哈希密碼,但此刻我無法登錄,因爲數據庫中的密碼未被哈希。
cakephp如何散列密碼?散列密碼
我的安全鹽是Dhhfei38fhDg37dg6Dg208Dh3h380Hrjd3
可否請你走在我通過它做什麼?
我已經構建了一個登錄表單,但沒有註冊表單,所以我將用戶詳細信息直接放到sql數據庫中。
我發現當用戶嘗試登錄時,cakephp會自動哈希密碼,但此刻我無法登錄,因爲數據庫中的密碼未被哈希。
cakephp如何散列密碼?散列密碼
我的安全鹽是Dhhfei38fhDg37dg6Dg208Dh3h380Hrjd3
可否請你走在我通過它做什麼?
散列密碼由創建:
$hashedPasswords = Security::hash($yourPass, NULL, true);
根據How to – password hashing in cakephp:「Security :: hash採用類型sha1」。
這裏是一個在線的散列運算單元:http://www.fileformat.info/tool/hash.htm –
添加一個新用戶並輸入密碼。您可以獲取新用戶密碼的哈希值並將其粘貼到其他用戶的記錄中。在CakePHP中
我沒有帶創建的註冊表單尚未雖然,只是想知道如果任何人都知道如何蛋糕它可以離開的註冊表格,直到後來,但仍然能夠登錄。謝謝 – Chris
作爲CakePHP的2.0,蛋糕僅在其他地方的密碼散列在登錄過程中, (如寄存器方法... ),那麼密碼將不會被自動散列,這是因爲對於cakephp的新用戶來說,這被認爲是一種奇怪的行爲。 如果你想散列密碼,你需要使用Sudhir提到的方法。 蛋糕不再自動散列密碼的好處之一是,你可以更容易地檢查密碼的複雜性(如果包含特殊字符,數字,字母ecc)。
debug(AuthComponent::password("your-password"));
這就是如果你在你的UserModel中以這種方式散列你的密碼。
public function beforeSave() {
if (isset($this->data[$this->alias]['password'])) {
$this->data[$this->alias]['password'] = AuthComponent::password($this->data[$this->alias]['password']);
}
return true;
}
http://book.cakephp.org/2.0/en/core-libraries/components/authentication.html#hashing-passwords
我建議使用一種行爲來保持代碼DRY:dereuromark.de/2011/08/25/working-with-passwords -in-的CakePHP – mark