【问题标题】:how to handle different rank authorization in a REST api如何在 REST api 中处理不同级别的授权
【发布时间】:2021-08-17 04:13:54
【问题描述】:

我正在设计一个包含多种用户类型的 REST API:

  • 禁用用户
  • 标准用户
  • 支持用户
  • 管理员

对于每个用户,在关系数据库中分配给他们的某些属性。 例如文件、消息、付款……

假设我希望具有较高等级的用户能够处理与较低等级相关的数据(例如,管理员可以修改标准用户的属性) 如何以确保授权功能与流程(CRUD 流程)分离的方式实现它。

我想要这样的东西:

api.Get("/users/:id", authorization, processHandler)

我正在使用 echo 框架和 Golang,但我认为这并不重要。我正在寻找一种独立于语言的通用解决方案。

【问题讨论】:

  • 使用中间件 http 处理程序来包装请求并检查身份验证标头。然后,身份验证处理程序可以使用用户“角色”设置请求上下文值。下游处理程序可以检查请求上下文值并决定要强制执行的运行时行为。

标签: node.js api rest go


【解决方案1】:

也许您有角色和权限问题,当您通过 JWT 令牌控制访问级别时,该问题有解决方案(例如)。

您有一个启用了系统权限的表,并且您的用户具有关联或分配的权限,此“关联”可以通过角色和权限管理器 (CRUD) 进行管理。因此,当您需要将权限与用户关联时,您必须在权限和用户之间建立关系。然后,在令牌 (JWT) 中发送新的“状态”。

所以最后你的路线上有一个像这样的“中间件”

api.Get ("/ users /: id", authorization, processHandler)

您的authorization 角色有责任检查您的用户是否有使用端点的权限。

【讨论】:

  • 问题是这样我需要为每个路由创建一个单独的中间件。因为每条路线都有不同的任务并管理不同的属性。然后我需要检查用户想要管理的属性是否与排名较高的用户无关。
猜你喜欢
  • 2021-06-04
  • 2021-03-02
  • 1970-01-01
  • 2022-06-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-16
  • 2019-07-05
相关资源
最近更新 更多