深入分析AOP+自定义注解+RBAC实现操作权限管理设计思想!经过三个小节的部署,我们已经把这个思想走了一遍。下面内容是对于此次设计思想的一个详细介绍。帮助大家完善透彻的了解,到底自定义注解是如何实现的。以及,权限管理的核心思想是什么。
任何软件系统里,都会涉及到权限管理,一般市面上我们常见的是springSecurity.很多朋友对这个框架都熟悉,它经常被用来进行身份的认证和权限的判定。
我们上面三个小节其实就是等于自己定义了一个这样的权限管理系统。只是我们是借助于了AOP(面向切面的编程思想)。
这种思想在一些中大型项目中是很多见的。因为有些时候,我们需要做到更细粒度的权限控制。比如,甚至精确到某一个按钮的操作权限。不仅仅是菜单栏目的级别。比如大家在优酷app里面,可以偶尔会看见推荐过来的电影,需要会员的角色身份,才能播放。那个播放按钮。就是很细的权限控制粒度。如果我们本身就是会员角色了,点击播放按钮,会自动打开影视播放页面。否则,我们会跳转到一个开通会员身份的页面去。
权限管理系统里面其实就是2个大的思想,
第一:你是谁?
第二:你能干什么事情?
权限管理:
1:数据权限
指的是用户是否可以看见某些数据,目的是为了确保数据的保密。
例如财务人员可以看见所有人的工资流水单,但是员工只能看见个人的工资流水单。
具体实现细节:数据权限的颗粒度由粗到细,可以分为菜单级、栏目级、字段级。一般配置页面内都可以灵活操作它的。
2:操作权限
指的是用户是否能否操作对应的按钮和模块。需要先有数据权限,然后才有了操作权限。因此需要增加系统自动校验,选择了操作权限,就默认是开启了查看(数据)的权限。
取消了数据权限,就意味着自动取消了操作权限。
RBAC的数据表设计模式:
需要五张表来完成设计。
1:sys_menu(权限表)
2:sys_user(用户表)
3:sys_role(角色表)
4:sys_role_menu(角色表和权限表的映射关系)
5:sys_user_role(用户表和角色表的映射关系)
关系逻辑清晰明朗。
1:什么是RBAC?
缩写字母全拼是Role-Based-Access-Control
2:基于角色的访问控制
特点:权限不会直接分配给用户,而是分配给了用户所拥有的角色属性身上。
优势:当用户数量庞大时,分配权限就会变得很累赘,基于RBAC就会很轻松的解决权限分配问题。
我们只需要把不同的人员划分到对应的权限集合内就行了。
角色具备哪些操作权限的设计内容如上图所示。
用户具备哪些角色属性如下图所示、。
如图,我们只需要把用户可以具备的角色设置好,就可以让它自动实现权限的控制了。
vip会员,和普通访客(guest)自动就会具备了不同的访问权限了。
系统内有多少种角色,可以随时增加。
增加完角色,跟随该角色具备的权限情况,也得去实时同步设置一下就行了。
如果你们公司的项目,对权限管理的较为宽松,使用市面上开源的权限管理框架就够了。如果要求的非常严格,还想自定义管理,那就应该考虑今天的设计思想了。