| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 开发工具 -> 橙单微服务的权限部分 -> 正文阅读 |
|
[开发工具]橙单微服务的权限部分 |
假期前几天,给大家简单分享了橙单框架中的操作日志的体系,包括如何把从前端,到elk,再到skywalking等,如何完整的串联,如何使用定位线上问题,同时还介绍了JWT token部分,我们是如何实现用户身份验证的。今天分享一下我们的权限部分。 橙单的权限部分,比较完整且灵活,但是如果不了解他们的作用,往往会觉得相对复杂,特别是权限字部分,其实这个是和shiro中的权限字是对等的。 今天不讲代码,只是从需求视角介绍一下,为啥要这样设计, 用户 -> 分配角色 -> 角色 -> 分配菜单 -> 菜单,从而保证了,用户登录之后,有哪些菜单可见。 这个是最最简单的一种方式,只是从菜单可见性方面,实现了权限部分。如果仅仅如此,那么权限体系,很不安全,也基本不可用。postman的请求很轻松就实现了越权访问。 这一点非常非常重要,首先前端精确到了组件,而且菜单,这个粒度更加细致了,权限包括组件和Tab标签(标签内的所有组件)。我们试想一下,从管理员操作视角看,管理员在分配权限的时候,其实就是将菜单分配给角色,根本不会考虑到菜单和权限字的关联关系,这些关联关系,一般是开发实施团队,提供技术服务的。毕竟甲方的管理员,无需关心权限字,以及更为底层的权限资源url。 否则的话,如果没有权限字,就得让url和菜单直接绑定,那么应该也可以,这样系统管理员在给角色添加权限的时候,可能就会面对更多的ui组件,如果组件变化了,角色权限也得变化,这显然是不合理的。 因为菜单和权限字是多对多的关系,所以一个菜单可以关联多个权限字,这样系统管理员仅仅配置角色 -> 菜单的关系即可。
另外就是从权限字视角来看了,同一个弹框可能是同一个权限字,他可能是不同的表单按照触发的,这样权限字和菜单的多对多关键,就可以保证权限字被多个菜单复用,而无需为同一个弹框,不同的触发入口,创建多个权限字了。 最后是权限资源,也就是url,这个是后台进行权限验证的关键。 用户 -> 分配角色 -> 角色 -> 分配菜单 -> 菜单 -> 分配权限字 -> 权限字 -> 绑定权限资源 -> 权限资源(url),从而保证了,用户登录之后,后台可以控制,当前用户有哪些url接口是可以访问的。这些都连同白名单url,一起缓存到redis中。
这个就比较好理解了 从权限资源视角看,我新增一个接口,直接挂接到某个权限字上,这样有该权限字权限的用户,自然就可以访问这个接口了,否则的话,新增的接口,除了管理员就没人能够访问了。 从用户 -> 角色 -> 菜单 -> 权限字 -> 权限字,中间经历多个节点,为了便于线上权限问题的排查,我们还提供了一组查询接口和ui,我们后面会继续分享。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/14 15:15:41- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |