CakePHP ACL:可选的ACO节点(默认允许)

CakePHP ACL:可选的ACO节点(默认允许),php,cakephp,permissions,acl,Php,Cakephp,Permissions,Acl,我正在使用数据库ACL的修改版本制作一个CakePHP应用程序 为了避免为每个控制器创建ACO节点,我想建立一个允许用户访问页面的系统,除非另有拒绝。这意味着我不想为控制器创建ACO节点,除非绝对必要 通常,如果我无法创建ACO节点,当我的isauthorized()函数执行$this->Acl->check时,我会得到如下错误 Warning (512): DbAcl::check() - Failed ARO/ACO node lookup in permissions check. No

我正在使用数据库ACL的修改版本制作一个CakePHP应用程序

为了避免为每个控制器创建ACO节点,我想建立一个允许用户访问页面的系统,除非另有拒绝。这意味着我不想为控制器创建ACO节点,除非绝对必要

通常,如果我无法创建ACO节点,当我的
isauthorized()
函数执行
$this->Acl->check
时,我会得到如下错误

Warning (512): DbAcl::check() - Failed ARO/ACO node lookup in permissions check.  Node references:
Aro: Array
(
    [model] => Role
    [foreign_key] => 1
)
我认为一个可行的解决方案是在执行
$this->Acl->check
命令之前检查ACO节点是否存在。如果它不存在,那么可以阻止它检查权限

有没有办法根据
$this->Auth->action()
(输出类似于
控制器/成员/Edit
)的输出检查ACO节点是否存在

我的身份验证操作路径设置为“控制器”

或者有更好的办法

我希望我的问题措辞恰当,如果没有,我将确保澄清


谢谢

若要使用ACL组件,必须有ARO和ACO树。否则,使用该组件是没有意义的

我建议您为所有用户创建一个超级用户,允许他访问所有ACO节点,但拒绝特定ACO节点。因此,所有用户都将继承该抽象超级用户的权限。我想你已经学习了,是吗


另一个选项是使用Auth组件并编写自己的权限处理组件。有许多关于如何构建管理面板的教程。

如果你想使用ACL组件,你必须有ARO和ACO树。否则,使用该组件是没有意义的

我建议您为所有用户创建一个超级用户,允许他访问所有ACO节点,但拒绝特定ACO节点。因此,所有用户都将继承该抽象超级用户的权限。我想你已经学习了,是吗


另一个选项是使用Auth组件并编写自己的权限处理组件。有许多关于如何构建管理面板的教程。

通过编辑核心ACL.php文件解决了这个问题,没有正常的解决方案。

通过编辑核心ACL.php文件解决了这个问题,没有正常的解决方案。

可以用来检查Aco是否存在

if($this->Acl->Aco->node('controllers/Members/Edit')) {
    debug('Aco exists!');
}
您可以使用检查Aco是否存在

if($this->Acl->Aco->node('controllers/Members/Edit')) {
    debug('Aco exists!');
}