在 StrongLoop API Explorer 中,我可以选择查询:
/People/{id}/food_prefs
Person 基于内置的 User 模型。此查询应返回该人(用户)的所有 food_prefs 的 JSON 列表。相反,我收到有关授权的 401 错误。
因此模型关系是:
Person has many food_prefs
food_pref belongs to Person (foreign key: personId)
food_pref 模型如下所示:
property: type : number
property: personId : number
当我向 Person/{id}/food_pref 发送请求时,我收到错误 401:
{
"error": {
"name": "Error",
"status": 401,
"message": "Authorization Required",
"statusCode": 401,
"code": "AUTHORIZATION_REQUIRED",
"stack": "Error: Authorization Required\n
}
我还没有设置任何 ACL,但即使我设置了它以供所有人访问,我仍然会收到此错误。为什么?
最佳答案
答案是将以下权限添加到 Person 模型中的 ACL 部分。文件名为common/models/person.json:
{ "accessType": "EXECUTE",
"principalType": "ROLE",
"principalId": "$everyone",
"permission": "ALLOW",
"property": "__get__foodPrefs"
}
可以为其他方法设置类似的属性,例如用于扩展模型的方法,例如在 common/models/person.js 中设置的名为“getList”的远程方法。您只需将 __get__foodPrefs 替换为 getList。请务必注意,自动生成的方法(例如上面的方法)有两个下划线,而不是一个。
此外,其他权限可以是$authenticated、$owner等。
关于node.js - 为什么我在查询用户项时会出现 401 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31223151/