2010-01-15 34 views
1

我使用權威性componnet在我的CakePHP項目如何提高cakephp auth組件使用用戶類型?

我添加類型字段爲用戶MySQL表

該枚舉類型:管理,客戶

我需要身份驗證組件管理的重定向到CP頁面和客戶端他們的個人資料頁,只能ofcourse訪問一個conttroller ..

不使用ACL或相關

回答

1

任何其他我建議你服用isAuthoriz的優勢ed()函數,您可以添加到控制器或模型中。設置AuthComponent :: authorize = {'controller'|'model'}來選擇你想要使用的。

然後,您在模型控制器中編寫一個isAuthorized()函數,該函數在每個操作的auth/not auth時返回t/f。如果你願意的話,你也可以做一些行級別的檢查。

現在,如果您只是想將管理員重定向到登錄/ etc中的正確頁面,則可以將代碼添加到beforeFilter()方法(在特定控制器或app_controller.php中)。在這種情況下,只需檢查應用程序設置的管理員值是否與用戶的管理員值相同(AuthComponent會將其存儲在會話數據中,可通過$ this-> Auth-> User()訪問)。然後適當地路由到管理員/非管理員區域。

0

isAuthorized()是最好的選擇。 我建議將用戶從他們在數據庫中的組中分離出來,所以User habtm Group ...但是如果用戶屬於一個且只有一個組,則不會出現問題 我不建議將ACL用於非記錄級別權限系統

+0

是的,我只需要只有一個簡單的身份驗證。謝謝....... – assaqqaf 2010-01-17 09:50:28

0

只是要注意一些事情,但除非最近發生了變化,CakePHP不支持ENUM列類型。

最好的辦法是用戶表上的組模型(組表模式)和用戶表上的group_id字段。 然後你可以$ hasOne = array('Group');在您的用戶模型中。

從那裏,你可以遵循的驗證組件組訪問控制教程的數量龐大的任何一個通過一個簡單的谷歌搜索「的CakePHP Auth用戶組」

相關問題