node.js - 为什么我在查询用户项时会出现 401 错误?

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

在 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/

相关文章:

javascript - 无法让浏览器启动从 express 下载

php - 在 yii 中按关系 STAT 排序

php - 得不到结果。关系 (Laravel 4)

objective-c - 多关系的核心数据 NSPredicate

apache - 如何防止用户通过url访问多个目录下的图片

ios - swift - 失败 : responseValidationFailed in Alamofire (StatusCode 401)

javascript - Node.js EventEmitter `on` 事件未响应 `emit` 操作

javascript - 如何访问 nodejs 插件中的包装对象属性

node.js - 我可以仅使用 Dialogfow 的默认履行 Webhook 代码作为 Azure 上的起点吗?

javascript - Angularjs(1.3.6+) $resource 拦截器和全局 401 处理程序