Javascript Looback:配置acl和关系以列出属于已使用日志的所有对象
我正试图建立一个环回项目,但我遇到了一个我无法解决的基本问题 因此,我基本上得到了一个自定义用户模型,它定义了以下关系和ACL:Javascript Looback:配置acl和关系以列出属于已使用日志的所有对象,javascript,node.js,foreign-keys,acl,loopback,Javascript,Node.js,Foreign Keys,Acl,Loopback,我正试图建立一个环回项目,但我遇到了一个我无法解决的基本问题 因此,我基本上得到了一个自定义用户模型,它定义了以下关系和ACL: "relations": { ... "projects": { "type": "hasMany", "model": "project", "foreignKey": "userId" } } "acls": [ { "accessType": "*", "principal
"relations": {
...
"projects": {
"type": "hasMany",
"model": "project",
"foreignKey": "userId"
}
}
"acls": [
{
"accessType": "*",
"principalType": "ROLE",
"principalId": "$everyone",
"permission": "DENY"
},
{
"accessType": "READ",
"principalType": "ROLE",
"principalId": "$owner",
"permission": "ALLOW"
}
]
以及使用属性定义的“项目”模型:
"relations": {
"user": {
"type": "belongsTo",
"model": "user",
"foreignKey": "userId"
}
},
"acls": [
{
"accessType": "*",
"principalType": "ROLE",
"principalId": "$everyone",
"permission": "DENY"
},
{
"accessType": "*",
"principalType": "ROLE",
"principalId": "$owner",
"permission": "ALLOW"
},
{
"accessType": "EXECUTE",
"principalType": "ROLE",
"principalId": "$authenticated",
"permission": "ALLOW",
"property": "create"
}
]
首先,令我惊讶的是,当我在登录时提交帖子/项目时,我希望外键自动放入对象中,但看起来这必须手动完成。我想这是正常的,我想我对框架的期望太高了
也就是说,我一直在努力列出登录用户拥有的所有项目。执行GET/projects/{id},其中{id}是属于已登录用户的对象。当{id}指向一个不属于登录用户的对象时,我得到了一个401
但是,我当时还以为running/projects会返回登录用户拥有的所有项目,但会向我抛出一个401
我错过了什么?我的ACL设置是否错误?我用错方法了吗?我试着放置一个类似{“where”:{“userId”:“myId”}的过滤器,但没有成功。我还尝试了另一个端点/user/myId/projects,但没有更好的运气
谢谢所以我想我只是把环回搞错了,GET/projects不是正确的调用,而是GET/users/{userId}/projects。ACL和关系似乎设置正确。所以我想我只是得到了回送错误,GET/projects不是正确的调用,而是GET/users/{userId}/projects。ACL和关系似乎设置正确。您可以检查您的
model config.json
以确保内置的User
模型不是公共的吗?可能是您将路由发送到它,而不是自定义的用户
模型。@Ivan Schwarz感谢您的回复,用户未定义为公共用户。这是它的def“User”:{“dataSource”:“db”,“public”:false,“options”:{“realmRequired”:true,“realmDelimiter”:“}}}1)根据检查,$owner
仅对路径上有:id
的远程方法执行,例如,GET/projects/:id
。2) GET/user/:id/projects
返回401,因为它遵循user
模型上的ACL,并且这些ACL不允许列出项目。您正在寻找允许\uuuuu获取\uuuuu项目
属性。是否可以检查模型配置.json
以确保内置的用户
模型不是公共的?可能是您将路由发送到它,而不是自定义的用户
模型。@Ivan Schwarz感谢您的回复,用户未定义为公共用户。这是它的def“User”:{“dataSource”:“db”,“public”:false,“options”:{“realmRequired”:true,“realmDelimiter”:“}}}1)根据检查,$owner
仅对路径上有:id
的远程方法执行,例如,GET/projects/:id
。2) GET/user/:id/projects
返回401,因为它遵循user
模型上的ACL,并且这些ACL不允许列出项目。您正在寻找允许\uuuuuu获取\uuuu项目
属性。