node.js - 随着时间的推移,如何正确使用多个 Parse.Objects 和用户的 Parse.Roles 关系?

标签 node.js parse-server parse-cloud-code parse-dashboard

以下大部分内容都是通过解析仪表板完成的,所以有点啰嗦,但我理解的是代码而不是关系。

我正在设置 Parse.Roles,似乎每个单独的 Parse.Object 都需要设置角色才能访问给定的 Parse.Object。例如,对象 ACL 需要包含“管理员”和“版主”(具有各自的权限),以便管理员或版主具有访问权限。

由于父角色和子角色都是可能的,因此使用“组织”角色设置 Parse.Object 的 ACL 是有意义的,然后由子角色进一步修改该 ACL。因此,“组织”内的“查看者”无法写入,但“组织”内的“管理员”可以读取/写入。我尝试了多种方法来执行此操作 - 将一个用户关联到“查看者”,将一个用户关联到“组织”内的“管理员”,但这似乎不起作用。

我当前的解决方案:以手动/编程方式设置每个 Parse.Object ACL 与多个预设角色。例如。使用 ACL 角色“查看者”和“管理员”解析类“Person”。

问题:如果我想在将来为同一个组织创建不同的角色,我是否需要循环遍历每个 Parse.Object 并为每个过去的对象手动设置新角色?

这些关系应该由父组织管理,这样就不需要手动完成,这是有道理的,但这似乎不起作用。

任何答案、想法或链接都值得赞赏。

最佳答案

正如您所提到的,角色可以拥有角色并继承其父角色的权限。

因此,如果新角色适用于一个类或一组类的所有对象,则无需循环遍历所有解析对象。

我给你举个例子:

假设您有一个名为 Posts 的类。

  • 您有一个名为 viewer 的角色,还有一个名为 editor 的角色。

  • 当您创建新的帖子对象时,您将添加角色 viewereditor 作为帖子对象的 ACL。例如,查看者角色只能具有读取访问权限,而编辑者角色可以同时具有读取和写入访问权限。

对于每个组织:

  • 首先创建一个角色名称uniqueOrganizationName
  • 然后,将属于该组织的所有用户添加到 uniqueOrganizationName 用户(关系)。

现在,将来,如果您想要将该组织的所有用户添加到例如 editorRole 中,您可以添加uniqueOrganizationNameeditorRole 角色。现在,该组织的所有用户都可以修改所有帖子。如果您希望组织的某些用户能够编辑帖子,请将这些用户添加到 editorRole 用户。

注意:此方法是全局的。因此组织编辑可以编辑所有帖子对象。如果您想限制某个组织的编辑者只能编辑属于该组织的帖子:

  • 为每个组织创建两个独特的角色viewUniqueOrganizationRoleeditUniqueOrganizationRole

现在,当您创建新帖子时,根据帖子所属的组织,将 viewUniqueOrganizationRole && editUniqueOrganizationRole 添加到帖子对象的 ACL。

  • 此后,您可以将用户添加到 viewUniqueOrganizationRole 中,以便能够查看属于该组织的帖子,也可以将用户添加到 editUniqueOrganizationRole 中,以便他们可以编辑您的帖子.

希望我能回答你的问题。这是一个复杂的设计。

关于node.js - 随着时间的推移,如何正确使用多个 Parse.Objects 和用户的 Parse.Roles 关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52563147/

相关文章:

javascript - 尝试在本地主机 :3000 上使用 Express 运行脚本

javascript - 在 MongoDB 和 Mongoose 中将 JSON 文档替换为另一个,而无需事先了解 JSON 文档的属性

javascript - 需要帮助澄清 Parse.User.setPassword 文档

javascript - Parse.com 云代码错误 : success/error was not called when trying to update a user

node.js - 我应该使用哪些 Linux 系统调用从 stdin 读取原始字符?

javascript - 从字符串中提取所有电话号码

node.js - 解析服务器和 mongodb 问题

ios - 如何从 Parse 中删除对象?

javascript - 查询内部解析云 For 循环

javascript - ParseCloud错误102,无法通过指针查询