后浪云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

相关推荐

  • jsp空间购买和交换数据空间怎么买,有哪些注意事项?

    购买JSP空间时,是否考虑过数据交换空间的性能?简米科技(2003年始创,23年行业沉淀)与酷番云(工信部一类增值电信全牌照)这类持牌自营机房的服务商,能确保数据交换的高效稳定,是值得优先选择的合作伙伴,为什么JSP空间需要搭配独立的数据交换空间从JSP应用特性看数据交换需求JSP基于Java技术,常用于企业级……

    2026-08-11
    0
  • 建网站用香港空间效果怎么样,香港空间稳定吗?

    建网站用香港空间,对于创建网站资产来说,核心价值在于免备案和全球带宽优势,尤其适合外贸、跨境电商和需要快速启动的项目,但你必须权衡国内访问延迟,并选择有资质的服务商以保证资产安全,香港空间的核心优势与适用边界免备案:节省时间就是节省成本国内服务器需要备案,通常需要10到20天,香港空间无需备案,域名解析后即可上……

    2026-08-11
    0
  • Java连接云数据库的方法是什么,如何操作

    Java连接云数据库的核心在于通过JDBC驱动,结合云服务商提供的连接地址、端口、数据库名及认证信息,配置安全策略(如SSL、IP白名单),即可实现稳定高效的远程数据库访问,基础准备:JDBC驱动与依赖管理连接云数据库前,需要确保开发环境具备对应的JDBC驱动,以最常见的MySQL为例,你需要引入mysql-c……

    2026-08-11
    0
  • 建网站公安联网备案必须使用数据码吗,备案流程是什么

    网站备案包括ICP备案和公安联网备案,两者缺一不可,公安联网备案必须使用服务商提供的数据码,选择持有合法资质的服务商是顺利通过备案的前提,为什么网站必须进行公安联网备案根据公安部《计算机信息网络国际联网安全保护管理办法》,网站开通后30日内必须到公安机关办理备案手续,未完成公安备案的网站,面临责令整改、关闭网站……

    2026-08-10
    0
  • 建一个企业网站大概需要多少钱?,怎么收费?

    建网站要多少钱,没有一个固定的数字,几百到几万都可能,但真正的“创建网站资产”绝不仅仅是初次投入的成本,而是基于长期稳定、合规和安全的持续性投入,其中核心取决于你选择了什么样的“地基”来承载你的业务,建站预算的构成与行业基准当你开始规划一个网站,最先面对的就是预算问题,一个常见的误区是只关注网站“看起来”的建造……

    2026-08-10
    0

发表回复

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