为什么在查询用户的项目时会收到​​错误401?

时间:2015-07-04 17:04:03

标签: node.js relationship http-status-code-401 strongloop loopback

在StrongLoop API Explorer中,我可以选择查询:

  

/人/ {ID} / food_prefs

Person基于内置的User模型。此查询应返回该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,但即使我将其设置为访问所有人,我仍然会收到此错误。为什么呢?

1 个答案:

答案 0 :(得分:0)

答案是将以下权限添加到Person模型中的ACL部分。文件名是common / models / person.json:

{ "accessType": "EXECUTE", 
  "principalType": "ROLE", 
  "principalId": "$everyone", 
  "permission": "ALLOW", 
  "property": "__get__foodPrefs" 
}

可以为其他方法设置类似的属性,例如用于扩展模型的方法,例如名为" getList"的远程方法。共同设置/ models / person.js。您只需将__get__foodPrefs替换为getList即可。请务必注意,自动生成的方法(例如上面的方法)有两个下划线而不是一个。

此外,其他权限可以是$ authenticated,$ owner等。