1

我是 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'作为别名的条目。此条目有一个引用的 parent_id 'controllers/Users',而后者又具有一个引用的 parent_id 'controllers'

我的'aros_acos'表中只有一个条目授予管理员组完全权限。

基于上面的错误我做了一点挖掘,发现如果我直接尝试调用$this->Acl->Aco->node('controllers/Users/index');返回值是false. 但是,如果我对$this->Acl->Aco->node('controllers');返回的值进行相同的查询,则该数组是正确的。

某些东西显然无法正常运行,但我无法弄清楚我哪里出错了。我整天都在挖掘文档书和 API,但没有找到任何找不到'controllers/Users/index'的原因'controllers'。在这一点上,它似乎与/角色有关,但我不知道为什么。我在添加 Aco 时使用了相同的字符串,它正确保存。

谢谢!

4

1 回答 1

1

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

运行这个伟大的实用程序后,我发现我错误地使用别名中的填充路径添加了我的 ACO。事实证明,别名只是动作或控制器名称,并根据 parent_id 找到正确的路径。

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

例子:

我正在添加'controllers/Users/index'而不是'index'.

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

于 2013-04-09T19:17:51.767 回答