loopback-component-storage acl 401错误

容器模型看起来像这样:

{ "name": "container", "base": "Model", ... "acls": [ { "principalType": "ROLE", "principalId": "$everyone", "permission": "DENY", "accessType": "*" }, { "principalType": "ROLE", "principalId": "admin", "permission": "ALLOW", "accessType": "WRITE" } ] } 

当我发布图片时,它会返回一个401错误。 我确定我以“admin”用户身份login,因为我在json模型中使用相同的访问令牌和相同的acl发出两个请求。 对于第一个(不是容器)它是有效的,但对于容器不是。

容器ACL有问题吗?

– – -编辑 – – –

从DEBUG开始= loopback:security:acl它返回:

 ---ACL--- model container property * principalType ROLE principalId $everyone accessType * permission DENY with score: 7495 ---ACL--- model container property * principalType ROLE principalId admin accessType WRITE permission ALLOW with score: -1 

"property": "*"是acl中的默认值。

对于第一个请求(不是容器)它返回相同的,但pipe理员写入允许有更高的分数比$ everyone – * – 否认。

设置"score": -2不起作用。

你没有定义一个属性(基本上是一个方法),所以我猜ACl的分辨率给你的第一个和第二个更高的权重。

 "acls": [ { "principalType": "ROLE", "principalId": "$everyone", "permission": "DENY", "accessType": "*" }, { "principalType": "ROLE", "principalId": "admin", "property": "*", // Add this line "permission": "ALLOW", "accessType": "WRITE" } ] 

但是,有时候ACL可能很难弄清楚。 我会build议使用debuggingstring来查看ACL系统已经解决了什么:

在Windows上:

 set DEBUG=loopback:security:acl && node . 

编辑:

问题实际上来自accessType(请求的端点是EXECUTE而不是WRITE),因此ACL未按预期parsing。