【问题标题】:How can best deal with this complicated ACL situation using CakePHP?如何使用 CakePHP 最好地处理这种复杂的 ACL 情况?
【发布时间】:2011-06-27 08:22:03
【问题描述】:

我正在制作一个小型应用程序来处理项目相关信息,但我遇到了 ACL 问题。如何最好地处理以下情况?

我的应用有以下表格:

用户:保存用户信息(用户名、密码、电子邮件、群组等)

:用户所属的组。我有“管理员”、“经理”和“注册”

角色:注册用户的角色。我有“leader”、“member”和“guest”。

memberships:此表保存用户、角色和项目之间的关系。

projects:保存项目信息

items:项目有几个信息项。此表保留了这些项目。

表有如下关系:

用户:hasMany Memberships,belongsTo Groups。

:有很多用户

角色:hasMany Memberships

成员资格:属于用户、项目、角色

项目:hasMany Memberships、Items

项目:属于项目

基本上,管理员(或管理员)可以为注册用户分配角色。领导者和成员可以属于多个项目。属于特定项目的人可以编辑该项目的数据及其相关项目。领导者可以从注册用户池中为项目分配成员。

以下是 CRUD 方面的情况:

管理员:所有内容(用户、会员、项目、项目)的完整 CRUD

经理:可以使用“注册”类型的 CRUD 用户,但不能使用“经理”或“管理员”。成员资格、项目和项目的完整 CRUD。

已注册:可以根据角色做不同的事情:

领导者(角色):可以更新自己的用户信息并读取属于其项目的其他用户数据(信息存储在“会员”表中)。可以为他们的项目添加 CRUD 成员资格。可以为自己的项目增删改查项目。可以更新自己的项目。

成员(角色):可以更新自己的用户信息并读取属于其项目的其他用户数据。可以为自己的项目增删改查项目。可以为自己的项目阅读会员资格。可以更新自己的项目。

客人(角色):可以更新自己的用户信息。可以读取项目。

基于上述情况,您认为最好的处理方法是什么?我尝试使用 ACL,但在某处我丢失了它。我尝试使用一些可用的 ACL 插件但没有成功。最大的挑战是处理管理者和管理员的权限创建。请帮忙!

我还不是一个熟练的蛋糕烘焙师,所以请善待。您的建议和推荐将不胜感激。谢谢!

【问题讨论】:

    标签: cakephp cakephp-1.3 acl


    【解决方案1】:

    是的,Cake 的 ACL 可能很困难。我不能就如何解决你的问题给你一步一步的解释,但也许我可以帮助你大局。我建议你看看Cake's sample ACL app docs——也许你只看了documentation on AclComponent?文档的那部分可能有点令人困惑。

    我认为您必须稍微修改一下您的数据库结构,使其成为“ACL 方式”:

    1. 使用嵌套组代替roles 表(在表groups 上放置parent_id 列)。
    2. 您也不需要membership 表。 ACL 有 aros_acos 表。
    3. 您以AROs 的身份管理组。您的项目和项目的控制器(或这些控制器上的特定操作)是ACOs。
    4. 如果您正确设置 ACL(检查 this),用户管理控制器和模型(UserGroupUsersControllerGroupsController)“神奇地”负责维护 aros 表.
    5. 不幸的是,ACOs 和acos 表并不是那么简单。您必须决定如何管理这些(参见here 和之后的部分)。
    6. 在您的AppController::beforeFilter 方法上,您使用ACL 组件的allowdeny 方法来授予或拒绝对当前控制器/操作的访问($this->name$this->action

    我相信你差不多了,一旦你习惯了 Cake 的 ACL,应该不会很复杂。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-02
      • 1970-01-01
      相关资源
      最近更新 更多