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

如何使用CakePHP最好地处理这种复杂的ACL情况?,cakephp,cakephp-1.3,acl,Cakephp,Cakephp 1.3,Acl,我正在制作一个小应用程序来处理与项目相关的信息,我在使用ACL时遇到了问题。我如何最好地处理以下情况 我的应用程序包含以下表格: 用户:保存用户信息(用户名、通行证、电子邮件、组等) 组:用户所属的组。我有“管理员”、“经理”和“注册” 角色:注册用户的角色。我有“领导”、“成员”和“客人” 成员身份:此表保存用户、角色和项目之间的关系 项目:保存项目信息 项:项目有多个信息项。这张桌子放着这些东西 这些表具有以下关系: 用户:拥有许多会员资格,属于组 组:有许多用户 角色:拥有许多会员资格 会

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

我的应用程序包含以下表格: 用户:保存用户信息(用户名、通行证、电子邮件、组等)

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

角色:注册用户的角色。我有“领导”、“成员”和“客人”

成员身份:此表保存用户、角色和项目之间的关系

项目:保存项目信息

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

这些表具有以下关系: 用户:拥有许多会员资格,属于组

:有许多用户

角色:拥有许多会员资格

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

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

项目:属于项目

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

以下是积垢方面的情况: 管理员:所有内容(用户、会员资格、项目、项目)的完整CRUD

管理者:可以对“已注册”类型的用户进行CRUD,但不能对“管理者”或“管理员”类型的用户进行CRUD。会员资格、项目和项目的完整CRUD

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

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

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

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

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


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

是的,Cake的ACL可能很困难。关于如何解决你的问题,我不能一步一步地给你解释,但也许我能在大局上帮助你。我建议你看一看--也许你只看了这本书?文档的这一部分可能有点混乱

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

  • 不要使用
    角色
    表,而是使用嵌套的组(在表
    上放置一个
    父id
    列)
  • 您也不需要
    成员资格
    表。ACL有一个
    aros\u acos
  • 您可以将组管理为
    ARO
    s。项目和项目的控制器(或这些控制器上的特定操作)是
    ACO
    s
  • 如果正确设置ACL(选中),用户管理控制器和模型(
    user
    Group
    userscoontroller
    groupscoontroller
    )“神奇地”维护
    aros
  • 不幸的是,
    ACO
    s和
    acos
    表并不是那么简单。您必须决定如何管理这些(请参阅和后面的部分)
  • 在您的
    AppController::beforeFilter
    方法上,使用ACL组件的
    allow
    deny
    方法授予或拒绝对当前控制器/操作的访问权(
    $this->name
    $this->action
  • 我相信你就快到了,一旦你习惯了Cake的ACL,tt就不会变得复杂了