我想通过Acos列出CakePHP Acl数据库以及Aro是否具有是或否的权限。
这样做的最佳方式是什么?
答案 0 :(得分:1)
Cake内置acl shell,它提供了一个用于修改或查看acl数据的界面。它包含一个view (tree)函数,允许查看您的访问控制对象(aco,“事物”)和访问请求对象(aro,用户)数据层次结构:
示例aco树:
$ Console/cake acl view aco
Welcome to CakePHP v2.4.0-dev Console
---------------------------------------------------------------
App : app
Path: /var/www/app/
---------------------------------------------------------------
Aco tree:
---------------------------------------------------------------
[1] controllers
[2] Posts
[3] Posts
[4] index
---------------------------------------------------------------
aro tree示例:
$ Console/cake acl view aro
Welcome to CakePHP v2.4.0-dev Console
---------------------------------------------------------------
App : app
Path: /var/www/app/
---------------------------------------------------------------
Aro tree:
---------------------------------------------------------------
[1] Group.1
---------------------------------------------------------------
还有一个检查功能,用于确定给定的aro是否可以访问给定的aco:
$ Console/cake acl check Group.1 controllers/Posts
Welcome to CakePHP v2.4.0-dev Console
---------------------------------------------------------------
App : app
Path: /var/www/app/
---------------------------------------------------------------
Group.1 is allowed.
acl数据的本质是检查单个组合(此特定用户访问此特定对象)相对昂贵,并且(尽管可能)构建不切实际“谁可以访问什么”的一般解决方案,这就是为什么没有核心提供的方法来回答这个问题。
对于给定的acos列表,您可以轻松地在它们上面调用AclComponent::check来获取“特定用户可以访问的内容”的答案列表。可以像使用Aro
和Aco
模型的任何其他模型数据一样访问acl数据。