zoukankan      html  css  js  c++  java
  • 关于微服务架构的权限控制初步设计

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

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

    初步设想

    资源

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

    对象

    • 部门
    • 人员
    • 账号

    枢纽

    • 角色

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

    数据库设计:

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

    使用结果

    菜单权限

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

    API权限

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

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

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

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

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

  • 相关阅读:
    php使用redis的有序集合zset实现延迟队列
    php使用redis的几种常见方式和用法
    redis缓存雪崩,缓存穿透,缓存击穿的解决方法
    php操作redis数据库方法总结
    mysql 悲观锁与乐观锁的理解
    OAuth2.0 协议的理解
    windows下的mongodb安装与配置
    node.js中对 redis 的安装和基本操作
    node.js中对 mysql 进行增删改查等操作和async,await处理
    node.js中 koa 框架的基本使用方法
  • 原文地址:https://www.cnblogs.com/yuchenghao/p/13493704.html
Copyright © 2011-2022 走看看