我可以在 loopbackjs API 中禁用 `includes` 过滤器功能吗?

Can I disable `includes` filter feature in loopbackjs API?

我有几个与 IBM loopback.js 框架相关的问题 (node.js)

问题

1) loopback js 是否能够限制在 api 中针对特定模型和角色使用 include 过滤器?

2) 我可以通过 include api 在 loopback js 中限制为当前用户获取不相关项目的可能性吗?

3) 也许有人知道那个或中间件的存在模块?对于 mw,它需要从安全角度来看。目前,在某些情况下,用户可以使用字典 API.

获取敏感数据

例子

例如: 我有 ROLE admin 的 USER 实体和 ROLE editor 的 USER 实体。他们有相关的自己的项目并可以访问它们。我想限制编辑器使用 GET ?filter=include:[projects] 的可能性并允许管理员使用它。我该怎么做?

例如: 我有两个具有 ROLE editor 的 USER 实体。他们有相关的自己的项目并可以访问它们。他们无法访问彼此的项目。 用户可以通过 GET api/users 获取用户列表,这没问题,因为它是字典。但是当用户调用 GET api/users?filter=include:[projects] 时,任何用户都可以访问其他用户的项目。我如何限制或禁用此功能?

Has loopback js ability to restrict use include filters in api for specific models and roles?

您可以禁止在每个关系的基础上包含相关模型。例如,内置关系 User has many AccessToken instances 禁止在查询用户时包含访问令牌。从我们的文档交叉发布 configuration example

{
  "name": "CustomUser",
  "base": "User",
  // ...
  "relations": {
    "accessTokens": {
      "type": "hasMany",
      "model": "AccessToken",
      "foreignKey": "userId",
      "options": {
        "disableInclude": true // <<< THIS IS THE CONFIG FLAG TO SET
      }
    }
  },
  // ...
}

据我所知,没有内置的 API 来禁用特定角色的包含过滤器。

使用 beforeRemote 挂钩 and/or 操作挂钩 access 可以实现此功能。这个想法是实现一个钩子来检查当前用户的角色并修改 filter 参数以删除禁止包含的内容。

我想到的另一个选项:禁止在所有用户的关系级别包含相关模型。提供 find 函数的自定义实现,它将手动获取相关模型,并且仅当授权用户有权这样做时:

  1. 禁用内置 find 方法,参见 Disabling a remote method
  2. 提供您自己在 GET /api/users 公开的远程方法,请参阅 How to add a remote method to a model

Can I restrict possibility to get not related items for current user by include api in loopback js?

据我所知,LoopBack 权限在 filter.include 级别不起作用。