ACO别名不适用于'controllers / Controller'值

时间:2013-04-09 17:58:33

标签: cakephp cakephp-2.3

我是CakePHP中的ACL新手。我相信我的管理员组已正确设置,可以完全访问'controllers' ACO。但是,当我尝试转到未明确公开的任何控制器或操作时,我收到错误。

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时使用了相同的字符串,并且保存得当。

谢谢!

1 个答案:

答案 0 :(得分:1)

我通过在以下位置安装ACL插件找到了问题: http://www.alaxos.net/blaxos/pages/view/plugin_acl_2.0

运行这个很棒的实用程序后,我发现我错误地在别名中添加了带有填充路径的ACO。事实证明,别名只是动作或控制器名称,并且基于parent_id,它找到了正确的路径。

这在CakePHP文档中没有很好地记录,但还有什么是新的。

示例:

我添加了'controllers/Users/index'而不是'index'

希望这可以帮助别人解决这个问题!我浪费了整整一天的时间。