【发布时间】:2017-07-30 22:27:53
【问题描述】:
Loopback 新手,我尝试使用用户模型和待办事项模型制作一个简单的 API。
名为 Todoer 的用户模型基于内置的用户模型。创建一个待办事项,登录,注销等就像一个魅力。 Todo 模型基于 PersistedModel,目前没有特殊的 ACL。
我从 Todo 模型到 Todoer 模型建立了一个 Belongs To 关系以获得所有权。 我还建立了从 Todoer 到 Todo 的 HasMany 关系,以便能够通过端点 GET / 检索用户的所有待办事项Todoer/{id}/todos
使用良好的令牌和 ID 登录 todoer 后,我可以轻松地获得来自 Todoer 端点的响应,为登录用户保留,例如 GET /Todoer/{id},因此我确信身份验证机制运行良好。
但每次我想点击GET /Todoer/{id}/todos,我只会收到一条错误消息,告诉我没有被授权。我始终确定我提供了登录时获得的良好令牌和 Todoer Id。
即使我在 Todoer 模型上创建一个大的 ACL 告诉所有人一切正常,它也会发生同样的情况。
我错过了什么?我想不通...
感谢您的帮助...
【问题讨论】:
-
您能分享您的 ACL 甚至整个
Todoer.json、Todo.json文件吗?第一眼看上去还不错。访问相关模型时,活动 ACL 仍然是您正在调用的模型的 ACL。因此,允许Todoer上的所有内容应该完全打开相关的Todos。 -
好的。这里是 todoer.json :
{` "name": "Todoer",` "base": "User",` "idInjection": true,` "options": {` ` "validateUpsert": true``},``“properties”:{},`“validations”:[],`“relations”:{``“todos”:{``“type”:“hasMany”,``“模型”:“Todo”,``“foreignKey”:“todoerId”``}``},`“acls”:[``{``“accessType”:“*”,`“principalType”:“ ROLE",` "principalId": "$everyone",` "permission": "ALLOW"` }` ` ],` "methods": {}`} -
这里是 todo.json : { "name": "Todo", "base": "PersistedModel", "idInjection": true, "options": { "validateUpsert": true } ,“属性”:{“文本”:{“类型”:“字符串”,“必需”:真},“完成”:{“类型”:“布尔”,“默认”:假}},“验证” :[],“关系”:{“todoer”:{“类型”:“belongsTo”,“模型”:“Todoer”,“foreignKey”:“todoerId”}},“acls”:[],“方法” : {} }
-
为了便于理解,您可以在 ACL 中看到我在 todoer 模型上打开了所有内容。但是当我点击 GET todoer/Id/todos 时,我仍然得到这个:{“error”:{“statusCode”:401,“name”:“Error”,“message”:“Autorisation requise”,“code”:“ AUTHORIZATION_REQUIRED", "stack": "错误:自动化要求\n [...] } }
-
您也可以编辑您的问题以获得代码格式,但谢谢!我已经发布了我的答案。希望对你有帮助!