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 .