【发布时间】:2021-08-17 04:13:54
【问题描述】:
我正在设计一个包含多种用户类型的 REST API:
- 禁用用户
- 标准用户
- 支持用户
- 管理员
- 根
对于每个用户,在关系数据库中分配给他们的某些属性。 例如文件、消息、付款……
假设我希望具有较高等级的用户能够处理与较低等级相关的数据(例如,管理员可以修改标准用户的属性) 如何以确保授权功能与流程(CRUD 流程)分离的方式实现它。
我想要这样的东西:
api.Get("/users/:id", authorization, processHandler)
我正在使用 echo 框架和 Golang,但我认为这并不重要。我正在寻找一种独立于语言的通用解决方案。
【问题讨论】:
-
使用中间件 http 处理程序来包装请求并检查身份验证标头。然后,身份验证处理程序可以使用用户“角色”设置请求上下文值。下游处理程序可以检查请求上下文值并决定要强制执行的运行时行为。