Javascript 如何在环回中限制对模型属性的访问

Javascript 如何在环回中限制对模型属性的访问,javascript,rest,loopbackjs,loopback,Javascript,Rest,Loopbackjs,Loopback,我目前正在处理我的loopback3(3.26.0)api的访问控制问题,并努力为除所有者之外的所有人重新访问一处房产 假设我有一个用户->运动员关系。运动员拥有“秘密财产” 我将secretProperty设置为protected,并且我有一个 Athlete.afterRemote('**', function(ctx, modelInstance, next) { // i am restricting property access here, which works for direc

我目前正在处理我的loopback3(3.26.0)api的访问控制问题,并努力为除所有者之外的所有人重新访问一处房产

假设我有一个用户->运动员关系。运动员拥有“秘密财产”

我将secretProperty设置为protected,并且我有一个

Athlete.afterRemote('**', function(ctx, modelInstance, next) { // i am restricting property access here, which works for direct .find()}
如上所述

但我仍然有一个问题,当我询问

GET /user/{id}/athlete
返回的数据包含我的secretProperty,我的钩子永远不会被调用

如何限制对所有端点上的属性的访问?(基本上将其设置为隐藏,但不适用于某些角色/用户)

以下是我的模型定义: athleter.json

{
  "name": "athlete",
  "plural": "athletes",
  "base": "PersistedModel",
  "idInjection": true,
  "options": {
    "validateUpsert": true
  },
  "properties": {
    "name": {
      "type": "string",
      "required": false,
      "default": ""
    },
    "mySecretProperty": {
      "type": "number",
      "required": false,
      "default": 0
    }
  },
  "relations": {
    "user": {
      "type": "belongsTo",
      "model": "user",
      "foreignKey": ""
    }
  }
}
user.json

{
    "name": "user",
    "plural": "users",
    "base": "User",
    "idInjection": true,
    "options": {
        "validateUpsert": true
    },
    "validations": [],
    "relations": {
        "athlete": {
            "type": "hasOne",
            "model": "athlete",
            "foreignKey": ""
        }
    }
}

尝试向运动员模型添加属性:
“受保护”:[“mySecretProperty”
], 模型之间有一组关系,但没有设置它应该在哪些字段上运行,因此不起作用


环回不提供属性级别的安全性,只提供型号级别的安全性。为提供物业级安全,我们采取了以下措施:

  • 将该属性标记为受保护
  • 创建用户可以更新受保护属性的自定义端点
  • 限制可以访问属性的用户或角色访问自定义端点(2)
  • 另一个选项是使用“保存前”挂钩,验证用户和要更新的属性


    这意味着这是一项手动任务,你必须自己编写代码,因为它没有内置到环回中

    嗨,你能显示描述作者和书籍模型的文件吗?我添加了我的模型定义(并将模型的名称更改为实际的模型)。我尝试了受保护和隐藏的属性,但它们不包括我的用例。mySecretProperty应该对某些角色/用户可用,但对其他角色/用户不可用。此外,它们仅在i{include:“athletor”}它们而不是/user时工作/