Node.js RoleMapping.USER或RoleMapping.ROLE&;国际计算语言学协会
我在用电话 在阅读了文档和文档之后,我还不太清楚何时使用静态角色和ACL的角色映射 我有一个引导脚本,在其中我在应用程序中插入一些主要的静态角色(管理员、批准者、验证者等),并在ACL中使用这些角色 在我看来,当我声明用户角色时,我必须使用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'
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
。您的解释看起来不错,但您能稍微扩展一下吗?