后浪云Moralis教程:Moralis 角色

随着您的应用程序范围和用户群的增长,您可能会发现自己需要对数据片段的访问进行更粗粒度的控制,而用户链接的 ACL 无法提供这些控制。为了满足这一要求,Moralis 支持一种“基于角色的访问控制”形式。角色提供了一种对拥有 Moralis 数据的公共访问权限的用户进行分组的逻辑方式。角色是包含用户和其他角色的命名对象。授予角色的任何权限都隐式授予其用户以及它包含的任何角色的用户。

例如,在您的包含策划内容的应用程序中,您可能有许多被视为“版主”的用户,可以修改和删除其他用户创建的内容。您可能还拥有一组“管理员”用户,并被授予与版主相同的所有权限,但也可以修改应用程序的全局设置。通过将用户添加到这些角色,您可以确保新用户可以成为版主或管理员,而无需手动为每个用户授予每个资源的权限。

我们提供了一个名为 ​Moralis.Role​ 的专用类,它在您的客户端代码中表示这些角色对象。 ​Moralis.Role​ 是 ​Moralis.Object​ 的子类,具有所有相同的功能,例如灵活的模式、自动持久性和键值接口。 ​Moralis.Object​ 上的所有方法也存在于 ​Moralis.Role​ 上。不同之处在于 ​Moralis.Role​ 有一些特定于角色管理的附加功能。

Moralis.Role 属性

Moralis.Role​ 有几个与 ​Moralis.Object​ 不同的属性:

  • name​:角色的名称。 此值是必需的,并且只能在创建角色时设置一次。 名称必须由字母数字字符、空格、- 或 _ 组成。 此名称将用于标识角色,而不需要其 objectId。
  • users​:与将继承授予包含角色的权限的用户集的关系。
  • roles​:与角色集的关系,其用户和角色将继承授予包含角色的权限。

角色对象的安全性

Moralis.Role​ 使用与 Moralis 上的所有其他对象相同的安全方案 (ACL),但它需要显式设置 ACL。 通常,只有具有极大提升权限的用户(例如主用户或管理员)才能创建或修改角色,因此您应该相应地定义其 ACL。 请记住,如果您为某个用户授予 ​Moralis.Role​ 写入权限,则该用户可以将其他用户添加到该角色,甚至完全删除该角色。

要创建一个新的 ​Moralis.Role​,您可以编写:

// By specifying no write privileges for the ACL, we can ensure the role cannot be altered.
const roleACL = new Moralis.ACL();
roleACL.setPublicReadAccess(true);
const role = new Moralis.Role("Administrator", roleACL);
role.save();

您可以通过 ​Moralis.Role​ 上的​users​和​roles​关系添加应该继承新角色权限的用户和角色:

const role = new Moralis.Role(roleName, roleACL);
role.getUsers().add(usersToAddToRole);
role.getRoles().add(rolesToAddToRole);
role.save();

将 ACL 分配给您的角色时要格外小心,以便它们只能由应该有权修改它们的人进行修改。

其他对象的基于角色的安全性

现在您已经创建了一组在应用程序中使用的角色,您可以将它们与 ACL 一起使用来定义其用户将获得的权限。 每个 ​Moralis.Object​ 都可以指定一个 ​Moralis.ACL​,它提供了一个访问控制列表,指示哪些用户和角色应该被授予对该对象的读取或写入访问权限。

授予角色对对象的读取或写入权限非常简单。 您可以使用 ​Moralis.Role​:

const moderators = /* Query for some Moralis.Role */;
const wallPost = new Moralis.Object("WallPost");
const postACL = new Moralis.ACL();
postACL.setRoleWriteAccess(moderators, true);
wallPost.setACL(postACL);
wallPost.save();

您可以通过为 ACL 指定角色名称来避免查询角色:

const wallPost = new Moralis.Object("WallPost");
const postACL = new Moralis.ACL();
postACL.setRoleWriteAccess("Moderators", true);
wallPost.setACL(postACL);
wallPost.save();

角色层次

如上所述,一个角色可以包含另一个角色,从而在两个角色之间建立父子关系。 这种关系的结果是授予父角色的任何权限都隐式授予其所有子角色。

这些类型的关系通常出现在具有用户管理内容的应用程序中,例如论坛。 一小部分用户是管理员,对调整应用程序的设置、创建新论坛、设置全局消息等具有最高级别的访问权限。 另一组用户是版主,他们负责确保用户创建的内容保持适当。 任何具有管理员权限的用户也应该被授予任何主持人的权限。 要建立这种关系,您可以让您的管理员角色成为版主的子角色,如下所示:

const administrators = /* Your "Administrators" role */;
const moderators = /* Your "Moderators" role */;
moderators.getRoles().add(administrators);
moderators.save();

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/282280.html<

(0)
运维的头像运维
上一篇2025-05-13 09:39
下一篇 2025-05-13 09:41

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注