此命令将授予您所有 ARO 访问您的 ACO cake acl grant RootGroupName RootControllerName all 的权限。
之后,您可以指定要拒绝访问的特定操作:cake acl deny GroupName ControllerName|AcoActionName AcoActionName|permissions
如果拒绝后的第二个值是 AcoActionName,则必须使用以下权限值之一:all, create, read, update, delete。
一个小切线:
这就是我认为可能存在混淆的地方。你的结构
ACL [ACOs 和 AROs] 只是通常与
控制器/动作设置的结构,但可以称为任何名称
您会喜欢,因为在每个操作中都会检查权限。 CakePHP ACL 组织在一个
Tree (data structure) 和外部节点可以设置数据库级别的 CRUD 权限。
这是用户和 cmets 的示例 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
---------------------------------------------------------------
假设已全局授予访问权限,则所有请求者都可以访问所有对象。如果您想拒绝用户在提交 cmets 后对其进行编辑,您可以运行 cake acl deny Users Comments edit
这里有一个很棒的 ACL 教程,特别是末尾的 App_Controller 代码,它有一个很好的 sn-p 可以检查与控制器/操作匹配的 ACO 结构的权限:User Permissions and CakePHP ACL。
此外,CakePHP Book 有一个不错的 sn-p 可以将所有控制器/操作作为 ACO 规则插入:An Automatic Tool for Creating ACOs