REST 中的授权,无需额外的 sql 查询

问题描述 投票:0回答:0

假设我有一个包含产品的服务(在微服务架构中)。每个产品属于一个品牌,每个品牌分别属于一个公司(1:n 关系)。 (微)服务现在收到来自 API 网关的查询特定产品的请求。 API 网关另外发送几个分配给经过身份验证的用户的角色。

检测用户是否可以访问产品的一个想法是检查与产品、品牌或公司相关的角色是否与任何用户角色匹配。这似乎非常低效,因为在最坏的情况下我必须执行 3 个 SQL 查询(选择产品,选择包含该产品的所有品牌,选择包含该品牌的所有公司)

我知道的另一种明显的方法是让用户为此请求发送额外的数据,例如与该产品相关的公司或品牌。一种方法是分层构建 REST 端点。这可能看起来像这样

/company/<id>/brand/<id>/product/<id>
。这样,我就不必查询所有公司和品牌,但在某些时候我还必须验证该产品是否属于指定的公司和品牌,否则有人可以轻松绕过该逻辑。

当然我也可以向产品添加额外的数据来描述可以访问它的角色。然而,这将违反关系数据库的规范化

有没有更高效的处理权限的方式?

rest security authorization backend
© www.soinside.com 2019 - 2024. All rights reserved.