我正在將我的新工作中的cakephp應用從l.1升級到1.2。我正在用偉大的Auth組件取代本土的1.1授權代碼。問題是密碼不在傳統數據庫中散列。如何暫時關閉密碼散列,以便我可以開始使用Auth組件。Turn of Cakephp認證密碼散列
不要擔心,我會散列密碼並稍後更改。
我正在將我的新工作中的cakephp應用從l.1升級到1.2。我正在用偉大的Auth組件取代本土的1.1授權代碼。問題是密碼不在傳統數據庫中散列。如何暫時關閉密碼散列,以便我可以開始使用Auth組件。Turn of Cakephp認證密碼散列
不要擔心,我會散列密碼並稍後更改。
這是從另一個堆棧溢出答案改編的解決方案。重寫User :: hashPassword模型基本上什麼也不做。
How do I replace the cakephp password hashing algorithm?
<?php
class User extends AppModel {
var $name = 'User';
// this is used by the auth component to turn the password into its hash before comparing with the DB
function hashPasswords($data) {
return $data;
}
}
?>
從技術上講,您可以使用下面的查詢將數據庫中的所有密碼散列在一起。先備份你的餐桌!
UPDATE user_table SET password = SHA1(password)
從CakePHP的手動,預設哈希方案是SHA-1,所以除非你已經改變了它本應該這樣做。 SHA1
是一個內置的MySQL函數,但我認爲它也可以在大多數其他數據庫中使用。
我知道我可以哈希密碼這種方式,但我只是想暫時將其關閉。 – jbrass 2009-12-12 19:56:14
另外,cakephp使用鹽,所以這將是一個壞主意。也許以後你將不得不創建一個腳本來選擇,然後通過Security :: hash()進行散列。 – metrobalderas 2009-12-12 20:13:56
CakePHP Security :: hash()將字符串前綴爲來自app/config/core.php的安全salt值的哈希值 – neilcrookes 2009-12-12 20:18:38
您還必須配置AuthComponent以根據用戶模型進行身份驗證以利用此... $ this-> Auth-> authenticate = $ this-> User; – neilcrookes 2009-12-12 20:15:41
其實這在CakePHP 2.x中並不適用於我,所以我不得不創建一個像這樣的自定義auth組件 - http://stackoverflow.com/questions/573307/how-do-i-replace-the-cakephp - 密碼散列算法/ 10422486#10422486 – jesal 2012-05-02 22:18:44