我有很少的自定义角色,例如" 1" - >'超级管理员'" 2" - >' TeamMember&#39 ; ...我在数据库中维护我的ACL列表而不是JSON。
使用案例 - 在Logged in case中,如果有SuperAdmin,他可以使用ACL列表中定义的模型。工作正常。 - 此外,与teamMember角色合作正常。
$everyone
角色。我已在ACL表中正确地将$everyone
与ROLE
一起编写为ALLOW
。ACL未被搜查。
DEBUG清单:
loopback:security:role isInRole(): $everyone +0ms
loopback:security:access-context ---AccessContext--- +0ms
loopback:security:access-context principals: [] +0ms
loopback:security:access-context modelName user +0ms
loopback:security:access-context modelId undefined +0ms
loopback:security:access-context property loginUser +0ms
loopback:security:access-context method loginUser +0ms
loopback:security:access-context accessType EXECUTE +0ms
loopback:security:access-context accessToken: +0ms
loopback:security:access-context id "$anonymous" +0ms
loopback:security:access-context ttl 1209600 +0ms
loopback:security:access-context getUserId() null +0ms
loopback:security:access-context isAuthenticated() false +0ms
loopback:security:role Custom resolver found for role $everyone +0ms
角色的旋转变压器:
//SUPER ADMIN
Role.registerResolver("1", function(role, context, cb) {
let isSuperAdmin = false;
app.models.RoleMapping.findOne({where: {principalId: userId}}, function(err, res){ //userId will be passed from other obj...it will be not null...here i just made it simple
if(res.roleId == "1")
isSuperAdmin = true;
return cb(null, isSuperAdmin);
});
});
由于这个原因,我无法登录我的应用程序。 我正在扩展默认的用户模型,并编写了一个remoteMethod' loginUser'来执行用户登录。 (即使默认情况下登录'远程方法在这种情况下也不起作用)
但是,如果删除角色解析程序脚本,则不会遇到任何问题。登录成功 ,API返回成功令牌。我似乎只有解析器的问题,但无法找到问题。请帮我解决这个问题。
我的扩展模型user
的ACLS:(适用于SuperAdmin和所有人)
Col Names: id, model, property, accessType, permission, principalType, principalId
Rows: '1', 'user', '*', '*', 'ALLOW', 'ROLE', '1'
'2', 'user', '*', '*', 'ALLOW', 'ROLE', '$everyone'
表中的principalType: '1'
表示superAdmin。