基于RBAC权限控制模型的管理系统的设计与实现

news2024/10/6 8:31:26

文章目录

  • 一、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 下载说明

下载本系统代码的用户,必须同意以下内容,否则请勿下载。

  1. 出于自愿而使用本文,了解引用本文的风险,且同意自己承担引用本文的风险。
  2. 利用本文内容构建的任何信息内容以及导致的任何版权纠纷和法律争议及后果和作者无关,作者对此不承担任何责任。
  3. 在任何情况下,对于因引用本文而导致的任何难以合理预估的损失(包括但不仅限于商业利润损失、业务中断与业务信息丢失),作者概不承担任何责任。
  4. 必须了解使用本软件的风险,作者不承担任何因本软件而产生的难以预料的问题的相关责任。

下载链接:https://download.csdn.net/download/weixin_43819566/87392802

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/173825.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

kafka的介绍和基本使用

文章目录Kafka介绍1.Kafka的使用场景2.Kafka基本概念kafka基本使用1.安装前的环境准备2.启动kafka服务器3.创建主题topic4.发送消息5.消费消息Kafka介绍 Kafka是最初由Linkedin公司开发,是一个分布式、支持分区的(partition)、多副本的 &…

载波相位误差对BPSK解调性能的影响理论推导

在上一篇博客基础上,继续讨论载波相位误差对解调性能的影响! 【通信原理】通信原理书中解调器输入端信噪比a2/(2σ2)与比特信噪比Eb/No有什么关系? 以BPSK为例,从解调原理图可以看出,当本地参考载波信号与原始载波存在相位误差时,假设相位差为 φ \varphi φ,则解调器低…

【Linux】了解磁盘/文件系统/inode

文章目录一.磁盘1.磁盘的结构2.磁盘的定位(寻找方案)3.磁盘的分区与格式化介绍二.理解inode三.ext2文件系统的存储方案一.磁盘 1.磁盘的结构 问题1:什么是磁盘? 磁盘是在冯诺依曼体系结构中几乎唯一的机械设备,机械设…

AntDB数据库助力中国移动结算中心建设

为响应中国移动集团公司IT集中化的要求:全面落实“十三五”十大战略工程,加快“推动公司IT资源一体化整合“重点专项工作。以IT系统为载体,构建高效运营支撑体系,形成集中化支撑和协同业务支撑模式,打造极致体验、高效…

列表初始化(内置类型、自定义类型)

列表初始化的特性来源于单参数的隐式类型转换。以下面这个赋值为例,我们可以理解成 先创建一个匿名对象Point(2),这个时候就变成了 Point p Point(2);然后会调用拷贝构造。 虽然隐式转换的可以这样理解,但是最后会被编译器优化成直接调用有…

[Android]Bitmap Drawable

在实际开发中&#xff0c;我们可以直接引用原始的图片&#xff0c;但是也可以通过xml的方式来描述它&#xff0c;通过xml来描述的BitmapDrawable可以设置更多效果。 <?xml version"1.0" encoding"utf-8"?> <bitmap xmlns:android"http://…

java spring IOC Bean管理操作讲解 并代码演示xml的实现方式

查看本文 需要您使用spring创建过对象管理 如果之前没有接触过 可以先查看我的文章 java 手把手带你创建一个spring入门案例 IOC 操作中 Bean管理主要有两个部分 分别是创建对象和注入属性 他们都有两种实现方式 分别是xml和注解方式实现 本文只演示xml 后续我会出注解方式的文…

第十三届蓝桥杯省赛 JAVA A组 - 蜂巢

✍个人博客&#xff1a;https://blog.csdn.net/Newin2020?spm1011.2415.3001.5343 &#x1f4da;专栏地址&#xff1a;蓝桥杯题解集合 &#x1f4dd;原题地址&#xff1a;蜂巢 &#x1f4e3;专栏定位&#xff1a;为想参加蓝桥别的小伙伴整理常考算法题解&#xff0c;祝大家都能…

背包问题——“0-1背包”,“完全背包”(这样讲,还能不会?)

目录 一、0-1背包 1.1、0-1背包解决的问题 1.2、dp数组定义 1.3、转移方程 1.3.1、二维dp数组 1.3.2、一维dp数组 1.4、遍历顺序 1.5、测试代码 1.6、练习 二、完全背包 2.1、完全背包解决问题 2.2、与0-1背包的区别 2.3、测试代码 2.4、拓展问题&#xff1a;装满…

【2022】13 年终总结

新年Flag 2023年&#xff0c;为了各方面能有所进步&#xff0c;列一些希望达成的目标和想做的事&#xff0c;到年底看看效果。 撰写一篇英文论文 申请到CSC 和xl去外地玩两次 想到了再加 去年Flag倒了几个&#xff1f; 一维河网水动力学模型导师说不用自己编&#xff0c;看懂…

Numpy文件交互:.npy和.npz有什么区别?

文章目录saveloadsavezsavez_compressedNumpy提供了以.npy为后缀的文件存储方案&#xff0c;与这种文件格式密切相关的读、写函数分别是np.load和np.save。通过savez可以一次性存储多个数组&#xff0c;并可通过load以键值对的形式读取出来&#xff1b;如果觉得文件太大&#x…

Mybatis缓存

内存中的一块存储空间&#xff0c;服务于某个应用程序&#xff0c;旨在将频繁读取的数据临时保存在内存中&#xff0c;便于二次快速访问。 一级缓存 SqlSession级别的缓存&#xff0c;同一个SqlSession的发起多次同构查询&#xff0c;会将数据保存在一级缓存中。 注意&#x…

【NI Multisim 14.0虚拟仪器设计——放置虚拟仪器仪表(频率特性测试仪)】

目录 序言 &#x1f34d;放置虚拟仪器仪表 &#x1f349;频率特性测试仪 &#x1f34a;&#x1f34a;1.“模式”选项组 &#x1f34a;&#x1f34a;2.“水平”选项组 &#x1f34a;&#x1f34a;3.“垂直”选项组 &#x1f34a;&#x1f34a;4.“控件”选项组 序言 N…

SpringBoot+Vue项目大学生租房平台

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;springboot JDK版本&#xff1a;JDK1.8 服务器&#xff1a;tomcat7 数据库&#xff1a;mysql 5.7/8.0 数据库工具&#xff1a;Navicat11 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.3.9 浏…

数据结构课程设计[2023-01-19]

数据结构课程设计[2023-01-19] 数据结构课程设计 一、课程设计要求 实现指定的题目&#xff08;学号最后两位%41&#xff09;&#xff0c;并撰写课程设计报告。独立完成&#xff0c;功能不完备也没关系&#xff0c;只要是自己做的 使用 C、C或者 JAVA 语言&#xff0c;采用…

​第四章 Flink 窗口和水位线​

Flink 系列教程传送门 第一章 Flink 简介 第二章 Flink 环境部署 第三章 Flink DataStream API 第四章 Flink 窗口和水位线 第五章 Flink Table API&SQL 第六章 新闻热搜实时分析系统 一、时间概念&#xff1a;事件时间和处理时间 在流式处理的过程中&#xff0c;数据…

详解微信小程序开发中的“数据绑定”和代码样例

简介 首先需要区分微信小程序的运行环境和框架系统。运行环境为小程序在手机当中运行的时候&#xff0c;微信客户端所能提供的环境支持&#xff0c;也就是在这种环境下如何进行数据渲染工作&#xff1b;框架系统则是微信小程序在进行开发的过程中&#xff0c;如何通过代码实现…

数字逻辑理论——组合电路

利用数据选择器设计组合逻辑电路 m&#xff1a;组合电路输入变量个数 n&#xff1a;数据选择器的控制端个数 &#xff08;1&#xff09;mn 利用8选1数据选择器设计函数&#xff1a;FAB’A’CBC’ 待设计卡诺图&#xff1a; F∑(1,2,3,4,5,6) &#xff08;2&#xff09;m&g…

【每日一题】【LeetCode】【第十九天】【Python】汇总区间

解决之路 题目描述 测试案例&#xff08;部分&#xff09; 第一次 没有想到什么更快的方法&#xff0c;先用两个循环来写出来思路。 class Solution(object):def summaryRanges(self, nums):res []index 0n len(nums)while index < n:if index n - 1:res.append(str…

Spring_FrameWork_07(SpringMVC与SSM整合)

SpringMVC&#xff08;一种基于java实现的轻量级web框架&#xff09; 请求与响应 REST风格 SSM整合 拦截器 public class ServletContainersInitConfig extends AbstractDispatcherServletInitializer {Overrideprotected WebApplicationContext createServletApplicationCont…