我有一個應用程序,所有用戶都必須登錄。我使用Auth
組件進行身份驗證,並使用ACL
進行授權。cakePHP ACL未登錄時
我基本上做這樣的事情在beforeFilter管理員()的`控制器:
if(!$this->Acl->check(array('model' => 'User', 'foreign_key' => $this->Auth->user()['id']), 'Admin', 'read'))
{
pr('You are NOT allowed to be here!');
}
這非常適用於任何登錄的用戶,一些用戶可以看到管理頁面,有些不能。
然而,當我去/管理時尚未登錄,我得到:
AclNode ::節點() - Couldn '找不到由 "陣列([Aro0標識阿羅節點。模型] = >模型[Aro0.foreign_key] = > U) "
(我不知道爲什麼它打印的 'U')。這就像它試圖做查找,但由於用戶信息不在那裏,它崩潰了。我確定我在這裏錯過了一些東西。我可以通過檢查避免了問題,如果用戶登錄:
if($this->Auth->user()) //do the ACL check
但我不喜歡這樣的做法,我想這是錯誤的。
我需要某種默認設置嗎?
謝謝你的回答。我是ACL的新手,而且文檔很雜亂。我不明白爲什麼我沒有在acos中使用它,因爲它是在我登錄用戶時工作的。另外,爲什麼foreign_key錯誤?它指向登錄的用戶。 – joakimdahlstrom 2012-07-10 22:02:55