Cakephp ACL组件

Cakephp ACL组件,cakephp,Cakephp,我使用cakephp ACL组件使站点安全,但问题是当我试图拒绝某个特定操作时,例如cake ACL deny Group。3注意“delete”,它拒绝该组控制器的所有操作。aros_acos表如下---- id aro\u id aco\u id\u创建\u读取\u更新\u删除 1 1 1 1 1 1 1 2 2 10 1 1 1 1 3 3 10 1 1 1 -1 在上表中,第三行aro_id指向组3,aco_id指向Notes控制器 可能是什么问题。

我使用cakephp ACL组件使站点安全,但问题是当我试图拒绝某个特定操作时,例如cake ACL deny Group。3注意“delete”,它拒绝该组控制器的所有操作。aros_acos表如下---- id aro\u id aco\u id\u创建\u读取\u更新\u删除 1 1 1 1 1 1 1 2 2 10 1 1 1 1 3 3 10 1 1 1 -1 在上表中,第三行aro_id指向组3,aco_id指向Notes控制器


可能是什么问题。

我目前无法访问我的实现,因此这是来自内存的:

acos_aros表中的crud设置不会映射到或控制对方法/函数/操作的访问。是表中的实际行执行了此操作。您定义的Aro->Aco的每个排列都会有一行-默认情况下它们不一定存在

因此,管理员的条目(行):AdminUser_1=>Posts::delete将是一组
1、0或-1
。对于访问,将所有四个数字设置为
1
;对于拒绝,将所有四个数字设置为
-1

我通过为每个组、控制器和操作构建一个(巨大的)复选框矩阵来简化这一过程

要对此进行总结,请为用户启用“删除”:

  • 在acos_aros表中找到相应的行
  • 将所有四个
    \u创建、\u读取、\u更新、\u删除设置为1
  • e、 g


    可能您的数据库自上次更改以来已损坏

    我建议您修复这些表,记住,这是一个多关系加上TreeBehaviour的表,如果出于任何原因将操作从控制器节点中排除可以解释这种行为

    幸运的是,有人考虑到了这一点,并开发了ACL管理器插件,允许您使用控制台修复此问题

    将插件下载到您的插件文件夹中。 如果尚未加载所有插件,请在引导程序中加载插件。 登录到服务器并使用控制台执行以下任何命令:

    ./Console/cake AclExtras.AclExtras aco_sync
    
    您可以获得所有可用命令的完整指南,如下所示:

    ./Console/cake AclExtras.AclExtras -h
    ./Console/cake AclExtras.AclExtras aco_sync -h
    
    任何时候,如果您无法访问应用程序,请将控制器添加到AppController中的authorize方法,然后:$this->Auth->allow(),这样任何具有有效Auth的控制器都是有效的

    例如,仅acl检查:

    $this->Auth->authorize = array(
         'Actions' => array('actionPath' => 'controllers')
    );
    
    控制器和ACL检查示例:

    $this->Auth->authorize = array(
         'Controller',
         'Actions' => array('actionPath' => 'controllers')
    );
    

    使用第二个选项,您可以随时在控制器的beforeFilter中包含
    $this->Auth->allow()
    ,以允许访问您想要的用户。

    请正确编辑您的帖子。很难理解这一行数字的含义。
    $this->Auth->authorize = array(
         'Controller',
         'Actions' => array('actionPath' => 'controllers')
    );