我正在设计一个REST API,其中有几种用户类型:
- 禁用用户
- 标准用户
- 支持用户 管理根
对于每个用户,在关系数据库中都有分配给他们的某些属性。例如文件,消息,付款,…
假设我希望级别较高的用户能够处理级别较低的数据(例如,管理员可以修改标准用户的属性)我如何以一种确保授权功能与流程(CRUD流程)分离的方式实现它?
我想要这样的东西:
api.Get("/users/:id", authorization, processHandler)
我正在使用echo框架和Golang,但我认为这并不重要。我正在寻找一种独立于语言的通用解决方案。
也许您有角色和权限问题,当您通过JWT令牌(例如)控制访问级别时,该问题有一个解决方案。
你有一个启用系统权限的表,你的用户有关联的或分配的权限,这个"association"可以通过角色和权限管理器(CRUD)进行管理。因此,当您需要将权限与用户关联时,您必须在权限和用户之间创建关系。然后,发送新的"状态"。在令牌(JWT)。
最后你有了一个"中间件"在你这样的路线上
api.Get ("/ users /: id", authorization, processHandler)
并且您的authorization
角色有责任检查您的用户是否有使用端点的权限。