CakePHP ACL : Is a base group/ARO required

标签 cakephp acl

我正在为我的 CakePHP 应用程序 (1.3.14) 实现 ACL 组件。我已经正确设置了所有内容,但是有一些地方我仍然很模糊。

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

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

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

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

好像ACL和Auth的耦合度太高了。但这可能是我新的(有限的)理解。任何澄清将不胜感激。

更新

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

  • 将用户分配到多个组
  • 轻松维护“公共(public)”用户组 - 不必不断添加普通用户可以访问的 Controller /操作
  • 管理对 Controller 的访问/访问的代码示例
  • 正确测试用户属于某个组的代码示例。
  • 最佳答案

    我认为使用 Cake 的 native 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
    
    (以上都是通过 cake shell 完成的,但是很容易翻译成 PHP 变体)
    基本上,您可以使用“默认拒绝”范例(如 Cake 自己的 ACL 教程中所展示的),或者如上所述的“默认允许”范例。无论您选择哪种方法,都将取决于您期望应用程序的增长方式:您的大多数 Controller 是公开的,只有少数限制为管理员,还是您的大多数应用程序会受到公开的限制,并在需要时提供特定的访问权限?无论哪种方式,您仍然需要授予或拒绝访问权限。
    注意 下创建的两个 ARO根 : 公众 已注册 .使用此模型,请处理 已注册 好像是 创建 ARO 树时——将所有“真实用户”组放在它下面。这样,您可以在 下的对象上正常使用 ACL。已注册 ,以及 公众 用户将存在于此之外。
    综上所述,没有什么能阻止您使用 Cake 的身份验证机制和滚动您自己的访问控制方法。这是一个例子: Simple Authentication and Authorization Application . (注意:这是为 CakePHP 2.0 编写的,但这些概念也适用于 1.3)。
    编辑-
    在重新阅读了问题和其他回复后,我意识到您的目标更多是基于角色的访问控制模型,而不是内置 ACL 组件的传统的每用户一个用户模型。以下是为 RBAC 扩展内置身份验证组件的几个示例:

    Role-based ACL in CakePHP

    CakePHP Auth component: Users, Groups, Permissions


    另外,this two-part article描述了一种数据库支持的基于角色的授权方法,该方法可以应用于您的 Cake 应用程序。

    关于CakePHP ACL : Is a base group/ARO required,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8838838/

    相关文章:

    database - CakePHP 中保留的数据库表名是什么?

    cakephp - 是否建议在数据库上存储城市列表等内容?

    javascript - cakePhp - 访问 webroot 内的文件夹内容

    symfony - Symfony2 ACL 是否应该用于检查 SaaS 中的所有权?

    powershell - 如何删除注册表审核规则?

    networking - 如何在 Amazon Virtual Private Cloud 上设置网络 ACL?

    javascript - 是否可以在触发 $stateChangeStart 之前解析某些数据?

    php - CakePHP 响应停止已弃用

    php - C :\wamp\www\filepath\cake\libs\model\datasources\dbo\dbo_mysql. php 超出最大执行时间 60 秒

    php - 如何使用 Symfony ACL 过滤我的 Doctrine 查询