CakePHP ACL:是否需要基本组/ ARO

Jas*_*ary 4 acl cakephp

我正在为CakePHP应用程序(1.3.14)实现ACL组件.我已经正确设置了所有设置,但有一些区域我仍然模糊不清.

主要是,我是否需要为特殊基本用户组(ARO)明确设置权限(ACO)?

为简单起见,假设我有管理员,然后是其他所有人(普通用户).那么我是否需要为这些普通用户创建一个组并映射其所有允许权限?似乎管理这些权利将永远不会随着应用程序的增长而结束.

另外,如何将用户分配到多个组?

理想情况下,如果某人拥有用户帐户,Auth组件将授予对整个系统的访问权限.然后,ACL会简单地从受现有组保护的部分中拒绝它们.

看起来ACL和Auth的耦合太高了.但这可能是我新的(有限的)理解.任何澄清将不胜感激.

UPDATE

我已经开始了赏金.总之,我想实现CakePHP ACL(最好是,但可以使用匹配的第三方组件),以满足/解决以下问题:

  • 将用户分配到多个组
  • 轻松维护"公共"用户组 - 不必经常添加普通用户可以访问的控制器/操作
  • 管理对控制器/访问的访问的代码示例
  • 正确测试用户的代码示例属于一个组.

Jus*_*ᚄᚒᚔ 5

我认为使用Cake的本机ACL实现最好的希望如下:

cake acl create aro root public
cake acl create aro root registered
cake acl create aro registered administrators

(create acos using AclExtras)

cake acl grant registered controllers
cake acl grant public controllers
cake acl deny public controllers/MySecureController
cake acl deny public controllers/Widgets update
cake acl deny public controllers/Widgets delete
Run Code Online (Sandbox Code Playgroud)

(以上都是通过cake shell完成的,但很容易翻译成PHP变种)

基本上,您可以使用"默认拒绝"范例(如Cake自己的ACL教程中所示)或上述"默认允许"范例.您选择哪种方法取决于您对应用程序增长的期望:大多数控制器是公开的,只有少数几个仅限于管理员,或者您的大多数应用程序是否会受限于公共给定的特定访问权限?无论哪种方式,您仍然需要授予或拒绝访问权限.

注意在root下创建的两个ARO :publicregistered.使用此模型,在创建ARO树时将注册视为root用户 - 将所有"真实用户"组放在其下面.这样,您可以在注册的对象上正常使用ACL ,并且公共用户将存在于此之外.

总而言之,没有什么可以阻止您使用Cake的身份验证机制并滚动您自己的访问控制方法.以下是一个示例:简单身份验证和授权应用程序.(注意:这是为CakePHP 2.0编写的,但这些概念也适用于1.3).

编辑 -

在重新阅读问题和其他响应后,我意识到您的目标更多是基于角色的访问控制模型,而不是传统的内置ACL组件的每用户模型.以下是为RBAC扩展内置auth组件的几个示例:

CakePHP中基于角色的ACL

CakePHP Auth组件:用户,组,权限

此外,这篇由两部分组成的文章介绍了一种可应用于Cake应用程序的数据库支持的基于角色的授权方法.