容器模型如下所示:
{
"name": "container",
"base": "Model",
...
"acls": [
{
"principalType": "ROLE",
"principalId": "$everyone",
"permission": "DENY",
"accessType": "*"
},
{
"principalType": "ROLE",
"principalId": "admin",
"permission": "ALLOW",
"accessType": "WRITE"
}
]
}
当我向其发布图像时,它会返回401错误。我确定我以'admin'用户身份登录,因为我在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中的默认值。
对于第一个请求(不是容器),它返回相同但admin-write-allow的得分高于$ everyone - * - deny。
设置"score": -2
不起作用。
答案 0 :(得分:1)
你没有定义属性(基本上是一种方法),所以我猜ACl分辨率会给你的第一个和第二个提供更高的权重。
"acls": [
{
"principalType": "ROLE",
"principalId": "$everyone",
"permission": "DENY",
"accessType": "*"
},
{
"principalType": "ROLE",
"principalId": "admin",
"property": "*", // Add this line
"permission": "ALLOW",
"accessType": "WRITE"
}
]
但是,有时候ACL很难搞清楚。我建议使用debug string来确切了解ACL系统已解决的问题:
在Windows上:
set DEBUG=loopback:security:acl && node .
编辑:
问题实际上来自accessType(请求的端点是EXECUTE而不是WRITE),因此ACL未按预期解析。