如何在REST api中处理不同等级的授权



我正在设计一个REST API,其中有几种用户类型:

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

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

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

我想要这样的东西:

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

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

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

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

最后你有了一个"中间件"在你这样的路线上

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

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

最新更新