Cakephp ACL组件
我使用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组件,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控制器 可能是什么问题。
可能是什么问题。我目前无法访问我的实现,因此这是来自内存的: acos_aros表中的crud设置不会映射到或控制对方法/函数/操作的访问。是表中的实际行执行了此操作。您定义的Aro->Aco的每个排列都会有一行-默认情况下它们不一定存在 因此,管理员的条目(行):AdminUser_1=>Posts::delete将是一组
1、0或-1
。对于访问,将所有四个数字设置为1
;对于拒绝,将所有四个数字设置为-1
我通过为每个组、控制器和操作构建一个(巨大的)复选框矩阵来简化这一过程
要对此进行总结,请为用户启用“删除”:
\u创建、\u读取、\u更新、\u删除设置为1
可能您的数据库自上次更改以来已损坏 我建议您修复这些表,记住,这是一个多关系加上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')
);