Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 环回组件存储acl 401错误_Node.js_Acl_Loopbackjs - Fatal编程技术网

Node.js 环回组件存储acl 401错误

Node.js 环回组件存储acl 401错误,node.js,acl,loopbackjs,Node.js,Acl,Loopbackjs,容器模型如下所示: { "name": "container", "base": "Model", ... "acls": [ { "principalType": "ROLE", "principalId": "$everyone", "permission": "DENY", "accessType": "*" }, { "principalType": "ROLE", "prin

容器模型如下所示:

{
  "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
“属性”:“*”
是acl中的默认值

对于第一个请求(不是容器),它返回相同的结果,但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有时很难理解。我建议使用查看ACL系统已解决的问题:

在windows上:

编辑:


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

感谢调试提示<代码>“属性”:“*”默认值。我用
“属性”:“*”
进行了尝试。分数相同,但不起作用。
/containers/../upload
/containers/../download/img.jpg
都返回401错误。如果没有ACL,它就可以工作。因此,端点是正确的。请尝试使用
accessType:“*”
,我不确定这些端点是写入的还是执行的。它是
“accessType”:“执行”
。谢谢!
set DEBUG=loopback:security:acl && node .