2013-04-09 34 views
1

我是CakePHP中的ACL的新手。我相信我的管理員組設置正確,完全可以訪問'controllers' ACO。但是,當我嘗試訪問任何未明確公開的控制器或操作時,我會遇到錯誤。ACO別名與'controllers/Controller'值無效

Warning (512): DbAcl::check() - Failed ARO/ACO node lookup in permissions check. Node references: 
Aro: Array 
(
    [User] => Array 
     (
      [id] => 9 
      [email] => Admin 
      [group_id] => 3 
      [is_active] => 1 
      [created] => 2013-04-08 07:59:52 
      [modified] => 2013-04-08 07:59:52 
      [Group] => Array 
       (
        [id] => 3 
        [name] => Administrators 
        [user_count] => 2 
        [created] => 2013-04-08 06:34:58 
        [modified] => 2013-04-08 06:34:58 
       ) 

     ) 

) 

Aco: controllers/Users/index [CORE/Cake/Model/Permission.php, line 94] 

在我acos桌子上有用於'controllers/Users/index'作爲別名的條目。此條目具有參考'controllers/Users'的parent_id,其具有參考'controllers'的parent_id。

我的'aros_acos'表中只有一個條目授予管理員組的完全權限。

基於上面的錯誤我做了一點挖掘,發現如果我直接嘗試撥打$this->Acl->Aco->node('controllers/Users/index');返回的值是false。但如果我在$this->Acl->Aco->node('controllers');上執行相同的查詢,則返回的值是正確的數組。

東西顯然不能正常工作,但我無法弄清楚我哪裏出錯了。我一直在挖掘文檔和API,並沒有找到任何理由爲什麼'controllers/Users/index'沒有找到,但'controllers'是。在這一點上,它似乎與/角色有關,但我不知道爲什麼。添加Aco時我使用了相同的字符串,並正確保存。

謝謝! http://www.alaxos.net/blaxos/pages/view/plugin_acl_2.0

運行這個偉大事業我發現我是錯誤地將我的ACO與別名的填充路徑後:

回答

1

我通過安裝插件ACL中發現的問題。事實證明,別名只是行爲或控制器名稱,並根據parent_id找到正確的路徑。

這在CakePHP文檔中沒有很好的記錄,但還有什麼是新的。

實施例:

我被添加'controllers/Users/index'代替'index'

希望這可以幫助別人解決這個問題!我浪費了整整一天的時間。