提问人:hypnomaki 提问时间:4/4/2023 最后编辑:hypnomaki 更新时间:4/4/2023 访问量:31
REST 中的授权,无需额外的 sql 查询
Authorization in REST without additional sql queries
问:
假设我有一个包含产品的服务(在微服务架构中)。每个产品分别属于一个品牌,每个品牌属于一个公司(1:n关系)。(微)服务现在接收来自 API 网关的请求,查询特定产品。API 网关还会发送分配给经过身份验证的用户的几个角色。
检测用户是否可以访问产品的一个想法是检查与产品、品牌或公司相关的角色是否与任何用户角色匹配。这似乎效率非常低,因为在最坏的情况下,我必须执行 3 个 SQL 查询(选择产品,选择包含产品的所有品牌,选择包含该品牌的所有公司)
我所知道的另一种明显方法是让用户为此请求发送其他数据,例如与该产品相关的公司或品牌。执行此操作的一种方法是分层构建 REST 端点。这可能看起来像这样。这样,我就不必查询所有公司和品牌,但在某些时候,我还必须验证产品是否属于指定的公司和品牌,否则有人可以很容易地绕过该逻辑。/company/<id>/brand/<id>/product/<id>
当然,我还可以向产品添加其他数据,描述可以访问它的角色。但是,这将违反关系数据库的规范化
有没有更有效的处理权利的方法?
答: 暂无答案
评论