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

标签 cakephp cakephp-1.3 acl

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

我的应用程序具有下表:

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

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

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

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

项目:保留项目信息

项目:项目有多个信息项目。该表保留这些项目。

这些表具有以下关系:

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

:有许多用户

角色:拥有许多成员(member)资格

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

项目:拥有许多成员(member)资格、项目

项目:属于项目

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

以下是 CRUD 方面的情况:

管理员:对所有内容(用户、成员资格、项目、项目)进行完整的 CRUD

经理:可以对“注册”类型的用户进行 CRUD,但不能对“经理”或“管理员”类型的用户进行 CRUD。关于成员(member)资格、项目和元素的完整 CRUD。

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

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

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

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

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

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

最佳答案

是的,Cake 的 ACL 可能很困难。我无法为您提供有关如何解决问题的逐步解释,但也许我可以帮助您了解全局。建议你看看Cake's sample ACL app docs -- 也许你只读过documentation on AclComponent ?文档的这一部分可能有点令人困惑。

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

  1. 使用嵌套组(在表 groups 上放置 parent_id 列),而不是使用 roles 表。
  2. 您也不需要membership 表。 ACL 具有用于此目的的 aros_acos 表。
  3. 您可以将群组作为 ARO 进行管理。项目和项目的 Controller (或这些 Controller 上的特定操作)是 ACO
  4. 如果正确设置 ACL(检查 this ),用户管理 Controller 和模型(UserGroupUsersControllerGroupsController) “神奇地”负责维护 aros 表。
  5. 不幸的是,ACOacos 表并不是那么简单。您必须决定如何管理这些(请参阅 here 以及后面的部分)。
  6. 在您的 AppController::beforeFilter 方法中,您可以使用 ACL 组件的 allowdeny 方法来授予或拒绝对当前 Controller /操作 ($this->name, $this->action)

我相信您已经快成功了,一旦您习惯了 Cake 的 ACL,一切就不会那么复杂了。

关于cakephp - 如何使用 CakePHP 最好地处理这种复杂的 ACL 情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6490253/

相关文章:

amazon-web-services - AWS S3 - ACL 与 CORS 配置与存储桶/对象权限

powershell - 使用 powershell 在 Active Directory 对象的 ACL 中设置 "Write member attribute"

php - CakePhp单页获取多表数据

javascript - 跨多个应用程序共享 TinyMCE 插件

unit-testing - 将 PHPUnit 与 CakePHP 1.3 集成

php - CakePHP 没有从数据库中获取所有字段?

cakephp - 重置 auth 组件加载的用户数据

windows - 在 Powershell 中以系统用户身份运行命令

cakephp - 从 Cake 1.3 迁移到 2.0 及更高版本 - 迁移现有的,还是仅用于新的?

php - cakePHP 内存缓存逻辑不工作