假期前几天,给大家简单分享了橙单框架中的操作日志的体系,包括如何把从前端,到elk,再到skywalking等,如何完整的串联,如何使用定位线上问题,同时还介绍了JWT token部分,我们是如何实现用户身份验证的。今天分享一下我们的权限部分。

橙单的权限部分,比较完整且灵活,但是如果不了解他们的作用,往往会觉得相对复杂,特别是权限字部分,其实这个是和shiro中的权限字是对等的。

今天不讲代码,只是从需求视角介绍一下,为啥要这样设计,

这五类数据,分别存储在独立的数据表中,同时自顶而下,他们之间都有一张多对多的关联表。这样的设计结构,就可以保证权限部分的足够灵活,可以覆盖绝大多数的通用场景了。

用户 -> 分配角色 -> 角色 -> 分配菜单 -> 菜单,从而保证了,用户登录之后,有哪些菜单可见。

这个是最最简单的一种方式,只是从菜单可见性方面,实现了权限部分。如果仅仅如此,那么权限体系,很不安全,也基本不可用。postman的请求很轻松就实现了越权访问。

用户 -> 分配角色 -> 角色 -> 分配菜单 -> 菜单 -> 分配权限字 -> 权限字,从而保证了,用户登录之后,有哪些前端组件可见。

这一点非常非常重要,首先前端精确到了组件,而且菜单,这个粒度更加细致了,权限包括组件和Tab标签(标签内的所有组件)。我们试想一下,从管理员操作视角看,管理员在分配权限的时候,其实就是将菜单分配给角色,根本不会考虑到菜单和权限字的关联关系,这些关联关系,一般是开发实施团队,提供技术服务的。毕竟甲方的管理员,无需关心权限字,以及更为底层的权限资源url。

否则的话,如果没有权限字,就得让url和菜单直接绑定,那么应该也可以,这样系统管理员在给角色添加权限的时候,可能就会面对更多的ui组件,如果组件变化了,角色权限也得变化,这显然是不合理的。

因为菜单和权限字是多对多的关系,所以一个菜单可以关联多个权限字,这样系统管理员仅仅配置角色 -> 菜单的关系即可。


这样相对是比较直观的

另外就是从权限字视角来看了,同一个弹框可能是同一个权限字,他可能是不同的表单按照触发的,这样权限字和菜单的多对多关键,就可以保证权限字被多个菜单复用,而无需为同一个弹框,不同的触发入口,创建多个权限字了。

最后是权限资源,也就是url,这个是后台进行权限验证的关键。

用户 -> 分配角色 -> 角色 -> 分配菜单 -> 菜单 -> 分配权限字 -> 权限字 -> 绑定权限资源 -> 权限资源(url),从而保证了,用户登录之后,后台可以控制,当前用户有哪些url接口是可以访问的。这些都连同白名单url,一起缓存到redis中。


权限是分树形模块的,这样便于管理吧,每个controller,是一个缺省的模块,从该ui的布局,可以看到,这些数据的维护,都是非常低频的,一般都是系统升级,有实施人员操作的


最后就是给权限字分配url权限资源了

这个就比较好理解了

单体的后台权限验证代码,在拦截器中统一处理,微服务再网关过滤器中统一处理

从权限资源视角看,我新增一个接口,直接挂接到某个权限字上,这样有该权限字权限的用户,自然就可以访问这个接口了,否则的话,新增的接口,除了管理员就没人能够访问了。

从用户 -> 角色 -> 菜单 -> 权限字 -> 权限字,中间经历多个节点,为了便于线上权限问题的排查,我们还提供了一组查询接口和ui,我们后面会继续分享。

橙单微服务的权限部分相关推荐

  1. 橙单微服务的权限部分之过滤规则

    在橙单中,我们是通过mybatis拦截器统一拦截的,这样最大的好处是业务代码的解耦,不用每个开发人员,都自己写过滤了,很容易错和漏掉. 而mybatis拦截器,也是比较通用的插件方式 通过上图可以看到 ...

  2. 橙单微服务之批量导入

    上面这些代码全部是自动生成的,批量导入 如果你配置了这个表单,支持批量导入,那么代码就会生成,否则不会. 出于性能考虑,这里可以存储在本地,当然也可以存储在minio等oss中 橙单会生成一部分需要忽 ...

  3. 微服务下权限校验方案

    微服务权限校验方案 权限概述 鉴权和权限控制 权限问题描述 权限概述 任何一个系统都绕不开权限这两个字,一个良好的权限设计对一个系统起到了非常重要的作用,其实权限设计是个范围很大的问题,包括从数据库的 ...

  4. SpringCloud微服务权限控制(一)概述

    从单体应用到SOA应用再到Spring Cloud微服务构架,应用的安全访问都是非常重要的问题,怎么样设计微服务的权限控制?首先,权限控制可以分为三个部分:用户认证,服务权限,用户权限. 用户认证 用 ...

  5. 阿里巴巴前架构师360度无死角剖析微服务

    微服务是当前软件架构领域非常热门的词汇,在社区中也有很多热烈的讨论.因此,OSC第130期高手问答的主题是"究竟什么才是微服务",并邀请了黄勇作为高手嘉宾. 黄勇,现任特赞公司CT ...

  6. DDD微服务架构设计第四课 微服务落地实践的技术中台

    10 微服务落地的技术实践 如今,做一个优秀的程序员越来越难.激烈的市场竞争.互联网快速的迭代.软件系统规模化发展,无疑都大大增加了软件设计的难度.因此,对于架构师的能力要求也越来越高,就像我的一本书 ...

  7. DDD微服务架构设计第四课 DDD指导微服拆分和落地实现

    07 在线订餐场景中是如何开事件风暴会议的? 微服务设计最核心的难题是微服务的拆分,不合理的微服务拆分不仅不能提高研发效率,反倒还使得研发效率更低,因此要讲究"小而专"的设计.&q ...

  8. TSF微服务治理实战系列(四)——服务安全

    一.导语 **道路千万条,安全第一条.治理不规范,老板两行泪".**当企业从单体架构逐渐转向微服务架构时, 服务安全 的需求也随之分散到了整个微服务体系的各个部分中.这就需要构建一套配置活. ...

  9. 史上最简单:SpringCloud 集成 mybatis-plus(以若依微服务版本为例)

    编者按:若依微服务版是基于Spring Boot.Spring Cloud & Alibaba的微服务的权限管理系统,也是笔者比较推荐的个人学习和企业实践都比较优秀的开源项目. 笔者也以此项目 ...

最新文章

  1. mysql8.0查看用户_MySQL 8.0用户及安全管理
  2. 微信开发学习日记(二):3个案例
  3. ubuntu下python thrift安装
  4. Codeforces Round #693 (Div. 3) E. Correct Placement 思维
  5. [转载] java重写toString()方法
  6. JAVA中extends 与implements区别
  7. php curl 下载图片 花,PHP curl下载图片的方法
  8. 746. Min Cost Climbing Stairs 题解
  9. Solr 05 - Solr Web管理界面的基本使用
  10. 利用JavaScript实现京东自动叠蛋糕+淘宝自动领喵币,叠列车+618全民购物
  11. php导出excel例子,php使用原生的方法导出excel实例分享
  12. 通信室计算机室采购配置co2灭火器,2019一级消防案例分析考点:民用类建筑消防设施的配置...
  13. 分享几个国内外安全专家常用的漏洞库平台
  14. 一个生成Rockwell RSLogix5000 .csv 文件和.L5X文件的Excel插件
  15. 3轮全向轮正解---41
  16. LeetCode 岛屿的最大面积
  17. 2022-2028年中国喷砂设备行业发展动态及投资前景分析报告
  18. php购物商城,基于PHP的网上商城
  19. 手机kakao聊天能自动翻译 WhatsApp翻译 实时翻译
  20. DaisyDisk for mac(磁盘清理软件)中文版

热门文章

  1. php for循环写三角形,【杂谈】PHP运用for轮回输出三角形
  2. 维山VS073高拍仪技术规格说明书
  3. 干货分享:小程序项目实践和经验总结
  4. ArcGIS Pro 2019-nCoVn疫情热点图制作
  5. 实战PyQt5: 130-使用HTTP请求下载文件
  6. Switch NS 通过华硕梅林路由DNSMASQ屏蔽任天堂服务器
  7. 10款辅食做法,解决宝宝不爱吃蔬菜的难题
  8. PTA 3+2转段 数据库 mysql (3篇)
  9. 服务器断电后找不到磁盘,服务器断电数据丢失恢复原理和恢复过程
  10. 聊聊被注销的TMQ公众号