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。