文章目录
- 一、RBAC 权限设计
- 1.1 模型概述
- 1.2 模型分类
- 二、基于RBAC的后台管理系统
- 2.1 项目概述
- 2.2 技术选型
- 2.3 内部处理流程
- 2.4 功能模块展示
- 2.5 权限控制展示
- 2.6 下载说明
一、RBAC 权限设计
1.1 模型概述
基于角色的访问控制 RBAC,是实施面向企业安全策略的一种有效的访问控制方式。
其对系统操作的各种权限 不是 直接授予具体的用户,而是在用户集合与权限集合之间 建立一个角色集合,每一种角色对应一组相应的权限。一旦用户被分配了适当的角色后,该用户就拥有此角色的所有操作权限。
这样做的好处是:不必在每次创建用户时都进行分配权限的操作,只要分配用户相应的角色即可,而且角色的权限变更比用户的权限变更要少得多,这样将简化用户的权限管理,减少系统的开销。
(以上来源于百度)
简单理解就是,将用户、角色、权限之间建立一种关系,当为用户赋权时,可用通过角色来间接赋权。
如:一个用户的角色是系统的管理员,他拥有对一张表的增删改查,另一个用户是普通的管理员,他就只有这张表的查询权限等,再一个用户他即是系统管理员又是普通管理员,那么他拥有两种角色的所有权限。
1.2 模型分类
RBAC0 模型
RBAC0 模型,是最简单、最原始的模型。
模型将用户、角色和权限用最简单的方式连接起来。用户在使用一个功能的时候,可以认为他发起了一个会话 (session),而个 session 对应一个角色,但一个角色可以对应多种权限。换言之,用户和角色是多对一关系,即:一个用户只对应一个角色,一个角色可以对应多个用户。
RBAC1 模型
RBAC1 模型中,引入了继承的概念。
子角色可以继承父角色的权限,父角色的权利大于子角色,并且为角色进行了分层。
例如:一个企业中,数据管理员可以对清单数据、定额数据都进行管理。但是他的子角色是只有一部分人只能管理清单数据,另外一部分人只能管理定额数据。
RBAC2 模型
RBAC2 模型中,在 RBAC0 模型的基础上,引入了静态职责分离和动态职责分离两种概念。
静态职责分离:
① 用户的角色是有限制的,不能赋予所有角色。
② 用户想要获得高级的权限,就一定有低级的权限。
③ 用户在互斥的角色中只能选择一个。
动态职责分离:
① 用户可以有多个角色,但是一次只能激活一个。
RBAC3 模型
RBAC3 模型是 RBAC1 和 RBAC2 模型的结合,需要同时考虑角色分层和角色设置之间的互斥关系。
二、基于RBAC的后台管理系统
2.1 项目概述
该项目主要展示 RBAC 的权限控制效果,并提供员工管理模块以供测试。用户登录系统后,根据用户所关联的角色,查询角色拥有的权限,如:菜单权限、按钮权限。不同角色的用户,所显示的菜单可能也不尽相同。
系统管理模块主要有三个子模块,分别是:用户管理模块、角色管理模块和权限管理模块。三个模块中,管理员除了对于信息的基本管理以外,还可以对用户进行角色的分配,对角色进行权限的设置,以实现动态修改用户的权限信息(菜单和按钮)。
项目亮点:
① 系统除采用 RBAC 模型进行访问控制以外,还配合 Shiro 框架完成系统的鉴权机制,其中 RBAC 负责左侧菜单级别权限, Shiro 负责按钮级别权限。
② 系统对于添加修改相关操作采用 Validator 完成表单参数的校验,还会对于取值唯一的数据段进行业务校验,完善业务流程。
③ 系统应用 Hutool 工具类,配合完成数据的批量导出与导入工作。
④ 系统使用 Lombok 框架,以简化实体对象中常用方法的构建。
⑤ 系统设置 自定义业务异常类 ,配合 业务消息枚举类 和 业务结果包装类 ,利用 全局异常处理器 处理, 使业务异常的不友好界面不会展示到客户端,以此提高用户的交互体验。
2.2 技术选型
前端:
- Layui:采用经典的模块化的前端框架,系统采用 2.5.6 版本。
- Layuicms:基于 Layui 的后台管理模板,系统采用 layuicms2.0 版本。
后端:
- Spring:构建系统核心逻辑的后端框架,系统采用 5.2.0 版本。
- SpringMVC:请求驱动类型的轻量级 web 框架,系统采用 5.2.0 版本。
- Mybatis:连接数据库的框架,系统采用 3.5.6 版本。
数据库:
- MySQL:项目的数据库,系统采用 8.0.31 版本。
- Druid:数据库的连接池,系统采用 1.2.3 版本。
开发环境:
- IntelliJ IDEA :项目后端的开发工具,使用版本为 2022.3.1。
- JDK:Java 的开发环境,使用版本为 1.8。
- Maven:后端项目的打包工具,使用版本为 3.8.6。
- Tomcat:本地服务器,使用版本为 9.0.70。
2.3 内部处理流程
添加或修改数据信息时,客户端发起请求,服务器首先进行对请求的发起者进行认证,通过后再对数据和业务进行校验,最后再进行底层的数据操作,具体流程如下:
注:业务校验如:工号手机号不可重复等
2.4 功能模块展示
管理员在登录界面在输入用户名和密码后,并通过滑动验证,即可进入到系统后台。系统后台的登录界面如图
在系统管理模块的用户管理界面,管理人员可以根据条件查询操作,还可以对系统用户进行添加、删除、修改、重置密码以及设置角色等操作,管理界面、修改用户信息界面和设置角色界面如下图所示:
在角色管理界面,管理员可以通过名称条件查询角色,还可以新增角色、修改人员、删除角色以及设置角色的权限等。角色管理界面和分配权限界面如下图所示:
在权限管理界面,左侧是后台系统权限的树形列表,右测是权限信息管理的表格。管理人员能实现通过名称和类型进行条件查询,还可以进行新增、删除以及编辑等操作。其中,默认一级菜单的父ID为0,权限管理界面如图所示:
员工信息管理界面是提供测试的界面,界面实现条件查询、添加、修改和删除。其中,删除可以批量删除也可以单条删除,添加实现批量导入,也可以批量导出当前条件下的所有数据。员工信息管理界面如下图所示:
2.5 权限控制展示
用户 “万能张三” 所的角色是信息管理员,信息管理员所拥有的菜单权限有:信息管理、员工管理,按钮权限有:新增员工、导出员工和修改员工,如下图所示:
“万能张三” 用户登录后,系统只展现其拥有的菜单权限和按钮权限,如下图所示:
2.6 下载说明
下载本系统代码的用户,必须同意以下内容,否则请勿下载。
- 出于自愿而使用本文,了解引用本文的风险,且同意自己承担引用本文的风险。
- 利用本文内容构建的任何信息内容以及导致的任何版权纠纷和法律争议及后果和作者无关,作者对此不承担任何责任。
- 在任何情况下,对于因引用本文而导致的任何难以合理预估的损失(包括但不仅限于商业利润损失、业务中断与业务信息丢失),作者概不承担任何责任。
- 必须了解使用本软件的风险,作者不承担任何因本软件而产生的难以预料的问题的相关责任。
下载链接:https://download.csdn.net/download/weixin_43819566/87392802