关于微服务架构的权限控制初步设计

关于微服务分布式架构的权限资源设计初步设想

最近开发的系统是前后端分离+微服务分布式架构,不同于单体应用的权限身份校验机制,前后端分离的情况下,无法直接确认前端请求者的身份权限,需要通过第三方鉴权中心来操作,身份校验较为简单,直接过滤网关级别的请求即可,但是权限校验就比较复杂了。

初步设想

资源

  • 系统
  • 菜单
  • 按钮
  • 服务
  • api

对象

  • 部门
  • 人员
  • 账号

枢纽

  • 角色

整体关系如下:对象通过枢纽进行资源的权限分配

数据库设计:

通过对中间表的维护,来收集用户的权限信息,其中部门角色具有继承的特性

使用结果

菜单权限

菜单权限通过前端配合实现动态路由,可以实现完全的权限控制,其中按钮的权限主要还是在前端进行逻辑处理,服务端完全无法控制,只能作为数据提供者

API权限

API权限,通过上面的权限体系可以做到颗粒度为API级别的控制,功能可以实现

不足之处:问题在于,这个关系表人工维护的话,成本较大,因为需要明确规定好该页面调用了哪些接口,前端有变更则需要及时录入数据,否则会响应无操作权限,这里的想法是分三步走,

  第一步:首先开发前后端同步开发,前端只维护系统菜单数据,后端维护服务接口数据,菜单接口关系表暂时不进行维护

  第二步:前后端初步开发完毕之后,通过小工具扫描前端代码, 进行菜单接口关系的自动录入

  第三步:通过搭建一个API接入申请系统,有需求变更的时候,前端申请某个页面的需求变更,并对新增的和删除的API进行申报,数据校验完毕之后,申请系统自动异步更新菜单接口关系表,完成两者的动态维护

原文地址:https://www.cnblogs.com/yuchenghao/p/13493704.html