该命令将授予您所有的ARO访问您的ACO cake acl grant RootGroupName RootControllerName all
。
此后你可以指定你想拒绝访问特定的动作:cake acl deny GroupName ControllerName|AcoActionName AcoActionName|permissions
如果你的第二个否定之后,价值是一个AcoActionName你将不得不使用权限下列值之一:all, create, read, update, delete
。
小切:
这是我认为的混乱可能会撒谎。您的 ACL [ACOs和ARO]的结构通常与您的控制器/操作设置的 结构匹配,但由于在每个操作中检查权限,因此可以调用您想要的任何名称 。在 Tree (data structure)中组织的CakePHP ACL和外部节点可以设置数据库级CRUD权限。
这是用户和注释的示例ACL模式。
Aco tree:
---------------------------------------------------------------
[1] controllers (root node)
[2] Comments
[3] edit
[4] add
[5] delete
---------------------------------------------------------------
Aro tree:
---------------------------------------------------------------
[1] Groups (root node)
[2] Users
[3] Admin
---------------------------------------------------------------
假设全局授予访问权限,所有请求者都可以访问所有对象。如果您想拒绝来自能够编辑评论的用户,一旦他们已经提交了他们,你会跑cake acl deny Users Comments edit
这里是ACL的一个伟大的教程,特别是在其有一个很好的片段,检查权限年底App_Controller代码与控制器/动作匹配的ACO结构:User Permissions and CakePHP ACL。
此外,CakePHP Book有一个很好的代码片段来插入所有控制器/操作作为ACO规则:An Automatic Tool for Creating ACOs