我可以在 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
函数的自定义实现,它将手动获取相关模型,并且仅当授权用户有权这样做时:
- 禁用内置
find
方法,参见 Disabling a remote method
- 提供您自己在
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
级别不起作用。
我有几个与 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
函数的自定义实现,它将手动获取相关模型,并且仅当授权用户有权这样做时:
- 禁用内置
find
方法,参见 Disabling a remote method - 提供您自己在
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
级别不起作用。