2011-02-11 137 views
0

因此,我一直在研究一直存在嚴重訪問控制的應用程序,並且需要儘快提供適當的解決方案。我已經按照Cookbook中的教程添加了CakePHP Auth和Acl組件,並且它的工作都很好,就像我手動添加用戶一樣,它會適當地在aros表中創建一個條目,SHA1將散列密碼適當的,所有的好東西。將ACL添加到CakePHP應用程序

現在對於那些證明稍微超出我的技能水平的位。我們在數據庫中有1000多個名稱,需要在新系統下成爲用戶。我嘗試使用MySQL查詢將它們轉儲到Users表中,但存在兩個問題:

(1)以這種方式執行操作不會在aros表中創建條目。我很確定我可以在規定的時間內使用這個工作,但是有沒有我想知道的捷徑?

(2)這是導致我撓頭的原因之一。當我手動添加用戶時,他們的密碼會自動進行SHA1哈希處理。當我從用戶/登錄頁面登錄時,我輸入的密碼與db中的散列密碼正確匹配,並且我可以訪問。但是,無論我對密碼直接進入數據庫的操作如何,我都無法通過登錄頁面授予對它們的訪問權限。最初,我用MySQL SHA1函數對它們進行了散列處理;我知道這可能不是一個好主意,因爲蛋糕灑了額外的鹽。我嘗試通過Cake的Security :: hash函數對它們進行哈希處理。我嘗試讓Cake將每個密碼保存到Users表中,讓它在幕後執行任何想要的哈希操作,而不受我的干擾。

在這些情況下,我都無法使用其中一個用戶名/密碼組合登錄。密碼看起來不錯並且散列化,並且它們與我將Security :: hash應用於它們後輸入的密碼相匹配。我錯過了什麼使我能夠正常工作?

+0

您已經爲用戶擁有的密碼(來自傳統應用程序_)的密碼已被散列? – joeb 2011-02-11 01:19:55

回答

0

如果我處於您的位置,我會建立一個Shell來爲您處理這個問題,這樣您就可以利用Cake所有的功能,例如自動添加新的ARO記錄並使用Security::hash來處理在保存記錄之前進行散列。

0

爲了記錄,這不是散列問題。我沒有在保存時指定usergroup_id(計劃稍後設置!)。我猜你不能使用不屬於用戶組的一個帳戶登錄,即使你的用戶名/密碼組合是正確的。