我想列出 Acos 的 CakePHP Acl 数据库,以及 Aro 是否有权限。
做这个的最好方式是什么?
Cake 有一个内置的acl shell,它提供了一个用于修改或查看 acl 数据的界面。它包括一个视图(树)功能,允许查看您的访问控制对象(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 树:
$ 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以获取“此特定用户可以访问的内容”的答案列表。acl 数据可以像使用Aro
和Aco
模型的任何其他模型数据一样访问。