环回组件存储 acl 401 错误

loopback-component-storage acl 401 error

容器模型如下所示:

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

当我 post 向它发送图像时 returns 出现 401 错误。我确定我是以 'admin' 用户身份登录的,因为我在 json 模型中使用相同的访问令牌和相同的 acl 发出了两个请求。对于第一个(不是容器)它可以工作,但对于容器一个不行。

容器ACL有问题吗?

-----编辑-----

从 DEBUG=loopback:security:acl 开始 returns:

---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 中的默认值。

对于第一个请求(不是容器),它 returns 相同但 admin-write-allow 的分数高于 $everyone-*-deny。

设置"score": -2无效。

您没有定义 属性(基本上是一种方法),所以我猜 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 系统已解析的内容:

On windows:

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

编辑:

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