我正在制作一个小型应用程序来处理与项目相关的信息,但ACL有问题。如何最好地处理以下情况?
我的应用程序有以下表格:
用户:保留用户信息(用户名、通行证、电子邮件、群组等)
组:用户所属的组。我有"管理员"、"经理"one_answers"注册"
角色:注册用户的角色。我有"领导"、"会员"one_answers"客人"。
成员资格:此表保留用户、角色和项目之间的关系。
项目:保留项目信息
项目:项目有几个信息项。这张桌子放着这些东西。
这些表具有以下关系:
用户:拥有许多成员资格,属于组。
组:有许多用户
角色:拥有许多会员
成员资格:属于用户、项目、角色
项目:拥有许多会员资格,项目
项目:属于项目
基本上,管理员(或管理员)可以为注册用户分配角色。领导和成员可以属于多个项目。属于特定项目的用户可以编辑该项目的数据及其关联项。领导者可以从注册用户库中为项目分配成员。
以下是CRUD的情况:
管理员:所有内容(用户、会员资格、项目、物品)的完整CRUD
管理员:可以CRUD"已注册"类型的用户,但不能CRUD"管理员"或"管理员"。关于会员资格、项目和物品的完整CRUD。
注册:可以根据角色做不同的事情:
领导者(角色):可以更新自己的用户信息,并读取属于其项目的其他用户数据(存储在"成员资格"表中的信息)。可以为他们的项目提供CRUD会员资格。可以为自己的项目CRUD项目。可以更新自己的项目。
成员(角色):可以更新自己的用户信息并读取属于其项目的其他用户数据。可以为自己的项目CRUD项目。可以读取自己项目的成员资格。可以更新自己的项目。
访客(角色):可以更新自己的用户信息。可以阅读项目。
基于以上情况,你认为处理它的最佳方法是什么?我尝试过ACL,但在某个地方我失去了它。我尝试过使用一些可用的ACL插件,但没有成功。最大的挑战是处理管理者和管理员创建的权限。请帮忙!
我还不是一个熟练的蛋糕面包师,所以请友善一点。非常感谢您的建议和推荐。非常感谢。
是的,Cake的ACL可能很难。关于如何解决你的问题,我无法给你一个循序渐进的解释,但也许我可以帮助你了解全局。我建议你看看Cake的ACL应用程序文档示例——也许你只阅读了AclComponent上的文档?这部分文档可能有点令人困惑。
我认为你必须稍微修改一下你的数据库结构,使其成为"ACL方式":
- 使用嵌套组(在表
groups
上放置一个parent_id
列)代替roles
表 - 您也不需要
membership
表。ACL有aros_acos
表 - 您将组管理为
ARO
s。项目和项(或这些控制器上的特定操作)的控制器是ACO
s - 如果ACL设置正确(选中此项),用户管理控制器和型号(
User
、Group
、UsersController
、GroupsController
)将"神奇地"负责维护aros
表 - 不幸的是,使用
ACO
和acos
表并不是那么简单。你必须决定如何管理这些(请参阅此处和后面的部分) - 在
AppController::beforeFilter
方法中,使用ACL组件的allow
和deny
方法来授予或拒绝对当前控制器/操作($this->name
、$this->action
)的访问权限
我相信你已经差不多了,一旦你习惯了Cake的ACL,tt就不应该复杂了。