如何使用CakePHP最好地处理这种复杂的ACL情况



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

我的应用程序有以下表格:

用户:保留用户信息(用户名、通行证、电子邮件、群组等)

:用户所属的组。我有"管理员"、"经理"one_answers"注册"

角色:注册用户的角色。我有"领导"、"会员"one_answers"客人"。

成员资格:此表保留用户、角色和项目之间的关系。

项目:保留项目信息

项目:项目有几个信息项。这张桌子放着这些东西。

这些表具有以下关系:

用户:拥有许多成员资格,属于组。

:有许多用户

角色:拥有许多会员

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

项目:拥有许多会员资格,项目

项目:属于项目

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

以下是CRUD的情况:

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

管理员:可以CRUD"已注册"类型的用户,但不能CRUD"管理员"或"管理员"。关于会员资格、项目和物品的完整CRUD。

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

领导者(角色):可以更新自己的用户信息,并读取属于其项目的其他用户数据(存储在"成员资格"表中的信息)。可以为他们的项目提供CRUD会员资格。可以为自己的项目CRUD项目。可以更新自己的项目。

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

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

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

我还不是一个熟练的蛋糕面包师,所以请友善一点。非常感谢您的建议和推荐。非常感谢。

是的,Cake的ACL可能很难。关于如何解决你的问题,我无法给你一个循序渐进的解释,但也许我可以帮助你了解全局。我建议你看看Cake的ACL应用程序文档示例——也许你只阅读了AclComponent上的文档?这部分文档可能有点令人困惑。

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

  1. 使用嵌套组(在表groups上放置一个parent_id列)代替roles
  2. 您也不需要membership表。ACL有aros_acos
  3. 您将组管理为ARO s。项目和项(或这些控制器上的特定操作)的控制器是ACO s
  4. 如果ACL设置正确(选中此项),用户管理控制器和型号(UserGroupUsersControllerGroupsController)将"神奇地"负责维护aros
  5. 不幸的是,使用ACOacos表并不是那么简单。你必须决定如何管理这些(请参阅此处和后面的部分)
  6. AppController::beforeFilter方法中,使用ACL组件的allowdeny方法来授予或拒绝对当前控制器/操作($this->name$this->action)的访问权限

我相信你已经差不多了,一旦你习惯了Cake的ACL,tt就不应该复杂了。

最新更新