2

我想列出 Acos 的 CakePHP Acl 数据库,以及 Aro 是否有权限。

做这个的最好方式是什么?

4

1 回答 1

1

使用 acl 外壳

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 数据可以像使用AroAco模型的任何其他模型数据一样访问。

于 2013-07-03T15:20:22.807 回答