TG-ADMIN 权限管理系统

项目简介

该项目是一款基于 SpringBoot + Vue2 + Jwt + ElementUi的 RBAC模型管理系统。

主要以自定义拦截器和jwt结合进行权限验证

通过自定义指令实现按钮级别权限,使用经典的RBAC模型

什么是RBAC?

1、RBAC模型概述

RBAC模型(Role-Based Access Control:基于角色的访问控制)模型是20世纪90年代研究出来的一种新模型,但其实在20世纪70年代的多用户计算时期,这种思想就已经被提出来,直到20世纪90年代中后期,RBAC才在研究团体中得到一些重视,并先后提出了许多类型的RBAC模型。其中以美国George Mason大学信息安全技术实验室(LIST)提出的RBAC96模型最具有代表,并得到了普遍的公认。

RBAC认为权限授权的过程可以抽象地概括为:Who是否可以对What进行How的访问操作,并对这个逻辑表达式进行判断是否为True的求解过程,也即是将权限问题转换为What、How的问题,Who、What、How构成了访问权限三元组;

2、RBAC的组成

在RBAC模型里面,有3个基础组成部分,分别是:用户、角色和权限。

RBAC通过定义角色的权限,并对用户授予某个角色从而来控制用户的权限,实现了用户和权限的逻辑分离(区别于ACL模型),极大地方便了权限的管理:

  • User(用户):每个用户都有唯一的UID识别,并被授予不同的角色
  • Role(角色):不同角色具有不同的权限
  • Permission(权限):访问权限
  • 用户-角色映射:用户和角色之间的映射关系
  • 角色-权限映射:角色和权限之间的映射

 3,RBAC的模型

  1. RBAC0:RBAC0是权限最基础也是核心的模型,它包括用户/角色/权限,其中用户和角色是多对多的关系,角色和权限也是多对多的关系
  2. RBAC1:引用角色继承关系即角色间有上下级关系
    1. 角色间的继承关系可分为一般继承关系和受限继承关系。
    2. 一般继承关系仅要求角色继承关系是一个绝对偏序关系,允许角色间的多继承。而受限继承关系则进一步要求角色继承关系是一个树结构,实现角色间的单继承,这种设计可以给角色分组和分层,一定程度简化了权限管理的工作。

技术选型

1、系统环境

  • Java EE 8
  • Servlet 3.0
  • Apache Maven 3
  • Mysql 5.5
  • nodejs 14.21.3

2、主框架

  • Spring Boot 2.4.2
  • Jwt
  • Hutool
  • commons-pool2
  • poi-ooxml
  • Redis
  • Swagger
  • fastjson
  • commons-pool2
  • Mybatis-Plus-Generator

3、持久层

  • Apache MyBatis -Plus 3.5.x
  • Alibaba Druid 1.2.x

4、视图层

  • Aplayer
  • 一言
  • mavon-editor
  • echarts
  • Element ui
  • Vue2

内置功能

  • 欢迎页:介绍系统技术选型和统计
  • 文章管理:发布和修改文章,以及文章分类。
    • 所有文章
    • 文章分类
    • 文章标签
  • 系统管理:整个系统的管理包括用户菜单
    • 用户管理:用户是系统操作者,该功能主要完成系统用户配置。
    • 菜单管理:配置系统菜单,操作权限,按钮权限标识等。
    • 角色管理:角色菜单权限分配、设置角色按机构进行数据范围权限划分。
    • 字典管理:对系统中经常使用的一些较为固定的数据进行维护。
    • 文件管理:对系统上传文件进行管理。
  • 系统接口:根据业务代码自动生成相关的api接口文档。
  • 连接池监视:监视当期系统数据库连接池状态,可进行分析SQL找出系统性能瓶颈。

动态路由配置

//该文件专门用来创建和管理整个应用的路由器
import Vue from "vue";
import VueRouter from "vue-router"
​
Vue.use(VueRouter)
//地址和组件的对应关系
const routes = [   {       path: '/login',       name: 'login',       meta: {           title: '登录'       },       component: 

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

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

相关文章

Go语言语法基础入门

目录 一、开篇二、环境与配置三、Hello, World!四、变量与类型五、条件语句六、循环语句七、函数八、数组与切片九、结构体十、错误处理十一、结语 一、开篇 Go语言,作为近年来备受瞩目的编程语言,以其高效、简洁和强大的并发处理能力赢得了众多开发者的…

面试数据库篇(mysql)- 03MYSQL支持的存储引擎有哪些, 有什么区别

存储引擎就是存储数据、建立索引、更新/查询数据等技术的实现方式 。存储引擎是基于表的,而不是基于库的,所以存储引擎也可被称为表类型。 MySQL体系结构 连接层服务层引擎层存储层 存储引擎特点 InnoDB MYSQL支持的存储引擎有哪些, 有什么区别 ? my…

nginx使用详解--流控

Nginx可以通过实现流量控制(流控)来限制对服务器的访问并保护其免受过载的影响,限流有以下几种: 正常限制访问频率(正常流量) 突发限制访问频率(突发流量) 限制并发连接数 黑白名单配…

【QT+QGIS跨平台编译】之六十:【QGIS_CORE跨平台编译】—【错误处理:TEST_DATA_DIR】

文章目录 一、TEST_DATA_DIR宏定义二、解决办法2.1 方法一2.2 方法二一、TEST_DATA_DIR宏定义 代码中较多地方引用了TEST_DATA_DIR 但是没有对其进行定义。 下载的QGIS的目录 qgis-3.22.8\tests\testdata 有对应的数据资源。 二、解决办法 2.1 方法一 在 pro 文件的预定义项…

叠氮生物素,Biotin-azide ,含有生物素基团和叠氮基团

您好,欢迎来到新研之家 文章关键词:生物素-叠氮,生物素叠氮,叠氮生物素,Biotin-azide ,Azide-Biotin,Biotin-N3,N3-Biotin,908007-17-0 一、基本信息 【产品简介】&a…

jax可微分编程的笔记(9)

jax可微分编程的笔记(9) 第九章 案例:FAST主动反射面的形态调整 深度学习是可微分编程框架下的一个极为重要的使用场景。 模型,损失函数及优化算法是常见优化问题的3个组成部分。 其概念的外延并不仅仅局限于深度学习。优化问题中的模型 除了神经网络,…

Tomcat部署及多实例

一、Tomcat简介 1、简介 Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。 当在一台机器上配置好Apache 服务器&#xff0c…

java 基础上(1)(核心知识搭配代码)

前言 java的学习分为了上部分以及下部分进行学习,上部分就是对于java的基础知识,面向对象上,面向对象下,异常操作,javaApi;下部主要是集合,泛型,反射,IO流,J…

BP 神经网络原理

BP (Back Propagation) 神经网络是1986年由 Rumelhart 和 McClelland 为首的科学家提出的概念,是一种按照误差逆向传播算法训练的多层前馈神经网络,是应用最广泛的神经网络。 1 BP 神经网络的结构和传播规则 BP神经网络由 输入层、隐含层(也…

【开源】JAVA+Vue.js实现天沐瑜伽馆管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 瑜伽课程模块2.3 课程预约模块2.4 系统公告模块2.5 课程评价模块2.6 瑜伽器械模块 三、系统设计3.1 实体类设计3.1.1 瑜伽课程3.1.2 瑜伽课程预约3.1.3 系统公告3.1.4 瑜伽课程评价 3.2 数据库设计3.2.…

Qt-QThread与QProcess 线程与进程介绍、对比与使用

目录 1 线程与进程的区别与联系1.1 进程定义1.2 线程定义1.3 线程与进程的区别1.4 线程与进程的联系2 QThread2.1 序言2.2 成员函数2.3 使用流程2.4 注意事项3 QProcess参考链接1 线程与进程的区别与联系 线程和进程是操作系统中两个重要的概念,它们在计算机系统中扮演着不同…

Java基于微信小程序的房屋租赁、租房小程序,附源码

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…

逻辑漏洞(pikachu)

#水平,垂直越权,未授权访问 通过个更换某个id之类的身份标识,从而使A账号获取(修改、删除)B账号数据 使用低权限身份的账号,发送高权限账号才能有的请求,获得其高权限操作 通过删除请求中的认…

cocos2d-lua:骨骼动画的使用

骨骼动画的使用 spine骨骼动画的使用Armature骨骼动画 spine骨骼动画的使用 -- spine骨骼动画导出的文件为:xxx.atlas,xxx.json,xxx.png 三个文件需同时存在 local spine sp.SkeletonAnimation:create("xxx.json", "xxx.atl…

消息队列+更新DB极易引发的DB并发修改bug

背景 我们在生产系统中和其他系统进行交互时一般都会通过消息队列来解耦生产者和消费者,然后通过每个使用方消费消息队列的消息的方式来完成消息的消费,并且一般来说我们消费消息后极有可能会操作DB,不过这种方式如果处理不够仔细&#xff0…

spark sql 转换字符串数组成多列结构

背景 在平时使用spark sql分析数据时,特别是分析从mysql的表入仓的hive表时,我们会经常和字符串数组的列打交道,而且这种情况下我们一般都需要把一行字符串数组的行数据转成多列的形式,我们看下怎么写这个sql spark sql 转换字符…

《More Effective C++》- 极精简版 11-20条

本文章属于专栏《业界Cpp进阶建议整理》 继续上一篇《More Effective C》- 极精简版 1-10条。本章我会继续讲解我对11-20条的极精简的理解。 11、不要让destructor的异常流出 先保障不会抛出异常,如果不能,就使用try catch,这里的注意catch里…

计算机网络(2)-----数据链路层

目录 一.数据链路层的基本概念 二.数据链路层的功能概述 功能一:为网络层提供服务。无确认无连接服务,有确认无连接服务,有确认面向连接服务。 功能二:链路管理,即连接的建立、维持、释放(用于面向连接的服务)。 功能三:组帧 透明传输:…

ESU毅速丨不锈钢材料为什么在金属3D打印中的广泛应用

不锈钢是一种传统且常见的材料,在金属3D打印领域应用最广。那么,为何不锈钢材料在3D打印中如此受欢迎呢?以下是几个关键原因。 卓越的工艺适应性 金属3D打印技术,如直接金属激光烧结(DMLS)和选择性激光熔融…

Redis--持久化机制详解

什么是redis持久化? Redis持久化是将内存的数据持久化到磁盘上,防止Redis宕机或者断点的时候内存中的数据丢失,把内存中的数据写入到磁盘的过程叫持久化。 Redis持久化的方式? RDB(Redis DataBase)&…