2009-12-12 88 views
3

我正在將我的新工作中的cakephp應用從l.1升級到1.2。我正在用偉大的Auth組件取代本土的1.1授權代碼。問題是密碼不在傳統數據庫中散列。如何暫時關閉密碼散列,以便我可以開始使用Auth組件。Turn of Cakephp認證密碼散列

不要擔心,我會散列密碼並稍後更改。

回答

4

這是從另一個堆棧溢出答案改編的解決方案。重寫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; 
    } 
} 
?> 
+1

您還必須配置AuthComponent以根據用戶模型進行身份驗證以利用此... $ this-> Auth-> authenticate = $ this-> User; – neilcrookes 2009-12-12 20:15:41

+0

其實這在CakePHP 2.x中並不適用於我,所以我不得不創建一個像這樣的自定義auth組件 - http://stackoverflow.com/questions/573307/how-do-i-replace-the-cakephp - 密碼散列算法/ 10422486#10422486 – jesal 2012-05-02 22:18:44

0

從技術上講,您可以使用下面的查詢將數據庫中的所有密碼散列在一起。先備份你的餐桌!

UPDATE user_table SET password = SHA1(password) 

從CakePHP的手動,預設哈希方案是SHA-1,所以除非你已經改變了它本應該這樣做。 SHA1是一個內置的MySQL函數,但我認爲它也可以在大多數其他數據庫中使用。

+0

我知道我可以哈希密碼這種方式,但我只是想暫時將其關閉。 – jbrass 2009-12-12 19:56:14

+1

另外,cakephp使用鹽,所以這將是一個壞主意。也許以後你將不得不創建一個腳本來選擇,然後通過Security :: hash()進行散列。 – metrobalderas 2009-12-12 20:13:56

+1

CakePHP Security :: hash()將字符串前綴爲來自app/config/core.php的安全salt值的哈希值 – neilcrookes 2009-12-12 20:18:38