论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
软件与程序人生
›
后端开发
›
.Net
›
大话《权限设计》全篇,明白不同设计模式的魅力 ...
大话《权限设计》全篇,明白不同设计模式的魅力
大号在练葵花宝典
金牌会员
|
2024-12-16 16:53:27
|
显示全部楼层
|
阅读模式
楼主
主题
897
|
帖子
897
|
积分
2691
说明
该文章是属于OverallAuth2.0系列文章,每周更新一篇该系列文章(从0到1完成体系开发)。
该体系文章,我会尽量说的非常具体,做到不管新手、老手都能看懂。
说明:OverallAuth2.0 是一个简朴、易懂、功能强盛的权限+可视化流程管理体系。
友情提醒:本篇文章是属于系列文章,看该文章前,发起先看之前文章,可以更好理解项目结构。
qq群:801913255,进群有什么不懂的尽管问,群主都会耐心解答。
关注我,学不会你来打我
注意:该文章是理论篇,背面会有开发的全过程。有兴趣的朋侪,请关注我吧(*^▽^*)。
01 体系权限的分别
通常来说,一个体系权限的分别,主要分位2大类:功能级权限和数据级权限。那么它们是如何分类的,我们看下图。
从上图可以看出。功能级权限和数据级权限的区别在于它们对权限分别的颗粒度不同。功能级权限:就像它名字一样,更多方向于功能方面的权限控制。数据级权限:更多的方向于数据方面的权限控制。
02 权限的设计模式有哪些
相识了一个体系的权限分别后,那么我们要如何去规划,设计这些权限。尽量减少体系权限的维护成本和权限的耦合度。是开发职员一直面临的严峻问题。
据我的相识,现在比力盛行的权限设计模式有以下四种。
通过上图,我们可以相识到权限的设计模式分为那四种,那么接下来我们就用《小说》的形式,分别讲一下这四种模式的使用场景及实现过程。
03 ACL基于用户的权限设计
乘风是一家创业公司的开发职员,由于是创业公司,规模不大,研发职员也只有可怜的3人,平常面临的研发任务非常紧张。某天的傍晚,乘风狠狠地伸了个懒腰,环顾四周空荡荡的座位。正预备收拾东西回家的时候,老板叫住了他。小乘,怎么财务的小红能看到运营的数据,可以让不同的人查看不同的数据嘛。乘风的老板也不怎么懂技术,需求就说了一句:让不同的职员看到不同的数据。乘风自信的答复道:可以的老板。第二天,乘风就根据老板的需求基于ACL整理出了一套权限管理的方案。
以上就是乘风基于ACL设计的权限。可以看出菜单和职员直接挂钩,可以简朴有效的做到每个员工访问不同的菜单,从而实现老板的需求。
04 RABC基于角色的权限设计
4.1角色权限
随着时间的推移,公司也处于快速发展阶段,终于在2年后的某一天。公司老板找到已经是研发组长的乘风说道:小乘啊,本日早上运营给我说,他们如今每天花在分配职员权限上的时间过多,每次有职员变更、职员参加都需要重新调整权限,而且不能成批量操纵,大大降低了他们的工作效率。你看有什么办法解决这个问题没有。
乘风一听,绝不夷由的说道。有的老板,明天我给你出一个方案。
老板一听很高兴,拍了拍乘风的肩膀离开了,他非常欣赏乘风这种服务风格,干净利落,总能解决问题。
乘风的自信来源于他一复一日的学习和专研。他明白用RABC就能完美解决老板的需求。于是他在第二天就做出了如下方案设计
上述2张图它的授权结果是一样的,但是很明显基于RABC的授权方式更加灵活。原因在于乘风在职员和权限之间抽象出一个角色层,这样不仅能减少体系之间的耦合,还能大大降低运营职员的运维时间。
为什么这么说,举一个简朴的例子:当【权限4】这块权限不想让任何人使用,那么在RABC中,我只需要把它从【角色3】中移除即可。反观ACL就比力麻烦,需要先后移除职员1和职员3的权限。试想一下这是3个员工,如果是10个100个,得有多麻烦。
很快乘风的方案得到了老板的肯定,并且给他升职加薪。
4.2 角色等级权限
这种设计模式很快就实现并用于体系之中,也确实大大解决了很多现实性问题。然而好景不长,公司在接下来的时间中,发展的越来越快,规模越来越大。这种设计方式也出现了和ACL同样的问题。当用户权限分的很细的时候,险些每个用户都对应一个角色。似乎又回到了几年前ACL设计模式的样子。
于是乘风通过不断地对体系的分析和对技术的专研,希望能从其中得到有效的解决办法。
可能是日有所思,夜有所梦。在某一天的晚上,乘风在睡梦中得到相识决办法。他梦见。。。把之前设定的角色订定了等级。也就是说高等级的角色会继续低等级角色的全部权限。
得到答案的乘风,也不困了,来不及穿衣服裤子。就这样穿着一条大裤衩打开电脑,画出了如下设计方案。
你没看错,其实就是和构造机构类似,那么我们如何实现呢?请看下图
可以看到【角色1-2】它是继续了【角色1-2-1】的全部权限。根据这一原理,我们不消在为【角色1-2】单独在赋予权限3和权限4。
啊嚏,乘风摸了摸鼻子。一个喷嚏让他在意识到自己全身上下就只剩一条大裤衩。看着设计方案乘风淡淡的说了一句。
岂非我真的是天才?随后就进入梦境。
05 ABAC基于属性的权限设计
光阴悠悠,人生如梦,转眼间又过去了几年。乘风也不再年轻,不是当前刚进公司的小白,但也正是如此。他仿佛失去了当年对技术的向往和专研热情,因为他总觉得自己的技术已经处于很高的水平。直到有一天,老板又找到了他。
小乘,老板推开乘风的办公室,见乘风正在泡茶,眉头稍稍一皱,但随后很快就消失。
老板,乘风没有发现老板的非常,起家道
小乘,昨天我去财务部视察的时候发现,财务部的小李居然能看到我们公司全部员工的工资。按道理说除了财务经理有权限查看之外,财务部下面的人应该都不具备查看员工工资的权限。
另有人事部的小张,他怎么能随意查看公司领导层的人事资料,甚至能随意修改,这不是胡闹嘛?
你是研发部的负责人,你应该思量思量,体系的数据安全,那写人能看什么数据,能修改什么数据,要做到可调控。
接下来的时间中,乘风老板和他聊了很多。大多数都是围绕数据安全的问题展开。
对了,你的茶具还挺全,整的不错。走到门口的老板,忽然转身对乘风说道。
老板最后的话,让乘风陷入了深深的沉思之中。
追念过去自己,从一开始的积极提升能力到如今的懈怠、自满,内心有一种说不出的感觉。
本日老板的话,让他意识到很多。总结后的乘风,下定决心要找回自己,然后根据老板简述的需求,总结如下
1:不同的人需要查看不同的数据,做到可调控。
2:不同的人对数据有不同的操纵权限,做到可调控。
这些问题的出现,让乘风非常头疼,不知从何下手。于是他仿佛回到过去的自己,努力查阅资料,提升技能。
终于得到了一个有效的解决办法。那就是ABAC基于属性的权限设计也就是说ABAC可以通过动态计算一个或者一组属性来举行权限控制。
那么ABAC属性大抵分位哪些?
得到答案的乘风,马上着手设计ABAC基于属性的权限设计。很快就完成权限体系的迭代。
随着相识的越多,乘风也开始总结自身存在的问题。之前哪点对自己技术的自信,如今看来就是自负和自满。技术没有顶峰,只有不断的求知、探索。
06 RABC+ABAC的权限设计
这个不必多说,就是字面的意思。我们的OverallAuth2.0就使用RABC+ABAC的权限设计。
以上就是本篇文章的全部内容,感谢耐心观看
后端WebApi
预览地址:http://139.155.137.144:8880/swagger/index.html
前端vue 预览地址:http://139.155.137.144:8881
关注公众号:发送【权限】,获取前后端代码
有兴趣的朋侪,请关注我微信公众号吧(*^▽^*)。
关注我:一个全栈多端的宝藏博主,定时分享技术文章,不定时分享开源项目。关注我,带你认识不一样的程序世界
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
正序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
发新帖
回复
大号在练葵花宝典
金牌会员
这个人很懒什么都没写!
楼主热帖
记一次MySql唯一索引在left join连表查 ...
鸿蒙系统架构分析
国产开源体系openEuler_24.03_LTS摆设 ...
2021年高教杯数学建模国赛C题的解题过 ...
【大话云原生】微服务篇-五星级酒店的 ...
STM32F1与STM32CubeIDE编程实例-磁簧开 ...
渗透测试过程参考
GO实现Redis:GO实现内存数据库(3) ...
MySQL实战45讲 3
C# 使用dataGridView导入导出excel(NPO ...
标签云
挺好的
服务器
快速回复
返回顶部
返回列表