Node.js RoleMapping.USER或RoleMapping.ROLE&;国际计算语言学协会

Node.js RoleMapping.USER或RoleMapping.ROLE&;国际计算语言学协会,node.js,acl,loopbackjs,Node.js,Acl,Loopbackjs,我在用电话 在阅读了文档和文档之后,我还不太清楚何时使用静态角色和ACL的角色映射 我有一个引导脚本,在其中我在应用程序中插入一些主要的静态角色(管理员、批准者、验证者等),并在ACL中使用这些角色 在我看来,当我声明用户角色时,我必须使用RoleMapping.user: const approver = yield app.models.User.create({ email: 'approver@lorem.com', password: 'secret-apprpver-123'

我在用电话

在阅读了文档和文档之后,我还不太清楚何时使用静态角色和ACL的角色映射

我有一个引导脚本,在其中我在应用程序中插入一些主要的静态角色(管理员、批准者、验证者等),并在ACL中使用这些角色

在我看来,当我声明用户角色时,我必须使用
RoleMapping.user

const approver = yield app.models.User.create({
  email: 'approver@lorem.com',
  password: 'secret-apprpver-123',
  status: 'active',
  emailVerified: true
});

const roleApprover = yield app.models.Role.findOne({
  where: {name: 'approver'}
});

yield app.models.RoleMapping.create({
  principalId: approver.id,
  principalType: app.models.RoleMapping.USER,
  roleId: roleApprover.id
});
在ACL中,我必须使用
RoleMapping.ROLE

{
  "principalType": "ROLE",

  "accessType": "EXECUTE",
  "principalId": "approver",
  "permission": "ALLOW",
  "property": "setApprove"
}
但它不是很清楚,每次我必须调试它时都会有很多头痛,每次我必须管理新角色或新ACL时都会有一些黑暗魔法和祈祷

有人能告诉我怎么做吗


在第一个代码块中,您将创建一个用户和一个角色,然后将该用户添加到该角色中。在第二个块(ACL模型配置)中,您允许该角色(以及其中的任何人)对模型执行操作(特别是在本例中执行
setApprove()
方法)。这两个动作协同工作,分别提供授权和身份验证

为了解决后续评论,模型配置ACL中的
原则类型
“角色”
,因为您希望该角色中的任何人都能够执行该操作。如果您改为使用
principalType
的“用户”
,则您必须将
principalId
更改为新的用户ID,并且您将只授权该用户(无论该角色是谁)执行该操作。

(仅将此转换为答案…)


在第一个代码块中,您将创建一个用户和一个角色,然后将该用户添加到该角色中。在第二个块(ACL模型配置)中,您允许该角色(以及其中的任何人)对模型执行操作(特别是在本例中执行
setApprove()
方法)。这两个动作协同工作,分别提供授权和身份验证


为了解决后续评论,模型配置ACL中的
原则类型
“角色”
,因为您希望该角色中的任何人都能够执行该操作。如果您改为使用
principalType
的“用户”
,则必须将
principalId
更改为新的用户ID,并且您将仅授权该用户(无论该角色是谁)执行该操作。

在第一个代码块中,您将在第二个代码块中向角色添加用户(ACL配置)您正在允许角色对模型执行操作。这两个操作协同工作,分别提供授权和身份验证。您不完全了解哪一部分?乍看之下,我将使用相同的
principalType
。您的解释看起来不错,但您能稍微扩展一下吗?在第一个代码块中您正在第二个块(ACL配置)中向角色添加用户您允许角色对模型执行操作。这两个操作协同工作,分别提供授权和身份验证。您不完全理解哪一部分?第一眼看,我会对这两个部分使用相同的
principalType
。您的解释看起来不错,但您能稍微扩展一下吗?