【重磅开源】MapleBoot权限控制使用介绍(菜单权限、按钮权限、数据权限)

基于SpringBoot+Vue3开发的轻量级快速开发脚手架

jdk-8 vue license

## 🍁项目简介

一个通用的前、后端项目模板

一个快速开发管理系统的项目

一个可以生成SpringBoot+Vue代码的项目

一个持续迭代的开源项目

一个程序员的心血合集

度过严寒,终有春日;挺过酷暑,必有丰收。

GitHub地址

Gitee地址

文档地址(更新中)

演示地址(储备中)

🌸实现思路

先说说菜单权限,其实很简单,市面上通用的实现,通过角色配置对应菜单,然后用户选择对应的角色,然后后端接口汇总出用户拥有的菜单,前端进行菜单路由渲染即可。

再说说按钮权限,同菜单权限,通过角色配置对应按钮权限,然后用户选择对应的角色,然后后端接口汇总出用户拥有的按钮权限,进入页面时,前端通过判断是否拥有权限,对按钮权限是否展示进行控制。

最后说说数据权限,数据权限控制要看具体的需求,这里实现的是,以部门作为数据权限的划分,使用角色来控制对用的权限,权限分为5档,分别是:全部数据权限、自定数据权限、本部门数据权限、本部门及以下数据权限、本人创建的数据权限。如果拥有多个角色,之间用or来连接。通过切面将需要数据权限控制接口,拼入权限控制条件的参数。然后传入sql中过滤查询。

具体的实现和使用过程在下文详细描述。

🌲菜单权限

详细的介绍一下菜单权限是怎么使用的吧,代码就不过多赘述了,详细可以看代码

简述步骤:

  1. 首先在【菜单管理】里面可以维护菜单按钮信息。
  2. 维护好之后,在【角色管理】里面选择角色对应的菜单权限。
  3. 维护好之后,在【用户管理】里面选择对应的角色即可
  1. 首先在【菜单管理】里面可以维护菜单按钮信息。如果是目录就选择目录,如果是菜单页面就选择菜单。

image-20240520104923352

  1. 维护好之后,在【角色管理】里面选择角色对应的菜单权限。

image-20240520104254428

  1. 维护好之后,在【用户管理】里面选择对应的角色即可,一个用户可以对应多个角色,这些角色会有重复的菜单,展示的时候会根据菜单id进行去重处理。

image-20240520104616594

🍀按钮权限

按钮权限配置同菜单权限,这里就不过多描述,菜单类型选择按钮即可,权限标志要确保唯一。其中权限标志建议模块:功能:按钮这样的格式配置,eg:system:user:update。方便使用,更好的防止不同按钮权限标志重置。

简述步骤:

  1. 配置按钮权限、角色、用户
  2. 引用authFunction工具类
  3. 使用v-if="auth(权限标志)"判断

配置好之后,需要在vue代码中对应的按钮展示地方进行控制,这里以用户管理为例,代码可以参考/views/system/user/index.vue

在登录的时候,会获取到用户拥有的按钮权限,然后引用import { auth } from '/@/utils/authFunction';封装的按钮权限判断方法,在按钮控制处添加v-if="auth('system:user:update')"判断即可。

🥦数据权限

简单介绍

这里简单说说,数据权限控制有时候千奇百怪,很多时候需要特殊处理,这里只是通用的场景,并不能覆盖所有的场景,使用时需要注意,判断是否符合自己的需求。

数据权限分为5档,需要在角色上配置。

如果一个人配置了多个角色,数据以or的形式关联。数据查询最大范围的数据。

例如:

【场景一】配置了拥有全部数据权限,别的条件都无视了

【场景二】配置了自定义数据权限本人创建的数据权限,则可以同时看到自定义部门数据和本人创建的数据

【场景三】配置了本部门及以下数据权限本部门数据权限本人创建的数据权限,则可以同时看到本部门及以下数据和本人创建的数据

全部数据权限:不加任何限制,查全部数据

自定义数据权限:查询关联部门的数据

本部门数据权限:部门ID为自己所属部门的数据

本部门及以下数据权限:部门ID为自己所属部门的数据和这个部门下数据

本人创建的数据权限:只查看

image-20240520110202095

数据库配置

当然,使用时要添加我们的权限注入

首先要确定需要添加数据权限过滤的表中要有归属部门ID和数据创建人ID

这里以sys_config为例,使用belong_dept_idcreate_id来控制权限

注意:这里默认用户数据为一套,如果是管理端和用户端多套用户,且用户ID都是自动递增的情况,需要做字段区分或来源区分。

CREATE TABLE `sys_config` (`id` BIGINT(20) NOT NULL AUTO_INCREMENT COMMENT '参数主键',`config_name` VARCHAR(100) NULL DEFAULT '' COMMENT '参数名称',`config_key` VARCHAR(100) NULL DEFAULT '' COMMENT '参数键名',`config_value` VARCHAR(500) NULL DEFAULT '' COMMENT '参数键值',`config_type` TINYINT(1) NULL DEFAULT '0' COMMENT '是否内置',`belong_dept_id` BIGINT(20) NULL DEFAULT NULL COMMENT '归属部门id',`create_id` BIGINT(20) NULL DEFAULT NULL COMMENT '创建人id',`create_time` DATETIME NULL DEFAULT NULL COMMENT '创建时间',`update_id` BIGINT(20) NULL DEFAULT NULL COMMENT '修改人id',`update_time` DATETIME NULL DEFAULT NULL COMMENT '更新时间',`remark` VARCHAR(500) NULL DEFAULT NULL COMMENT '备注',PRIMARY KEY (`id`) USING BTREE
)COMMENT='系统管理-参数配置表' COLLATE='utf8_general_ci' ENGINE=InnoDB;

项目中使用

在需要做数据权限区分的controller上使用@DataScope注解。

DataScope的两个参数介绍

deptAlias默认belong_dept_id,查询数据所在表的部门ID,如为多表关联,请指定表的别名,如:d.dept_id

userAlias默认create_id,查询数据所在表的用户ID,如为多表关联,请指定表的别名,如:u.create_id

请求参数要继承BaseQuery类,切面会判断是否属于BaseQuery类,并把数据权限参数解析放在dataScope参数上。

dataScope参数传入Mapper中,在sql条件里面添加${dataScope}

【注意】不要自己使用dataScope参数,切面会先清空dataScope参数,防止sql注入。

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

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

相关文章

【深度学习】Loss为Nan的可能原因

文章目录 1. 问题情境2. 原因分析3. 导致Loss为Nan的其他可能原因 1. 问题情境 在某个网络架构下,我为某个数据项引入了一个损失函数。 这个数据项是nn.Embedding类型的,我加入的损失函数是对nn.Embedding空间做约束。 因为我在没加入优化loss前&#x…

C# WPF入门学习主线篇(八)—— ListBox常见属性和事件

C# WPF入门学习主线篇(八)—— ListBox常见属性和事件 欢迎来到C# WPF入门学习系列的第八篇。在前面的文章中,我们已经探讨了WPF中的Button、TextBox和Label控件的使用。今天,我们将深入了解WPF中的另一个常用控件——ListBox。本…

Pulsar 社区周报 | No.2024-06-07 | Apache Pulsar 新分支 3.3 版本发布

“ 各位热爱 Pulsar 的小伙伴们,Pulsar 社区周报更新啦!这里将记录 Pulsar 社区每周的重要更新,每周发布。 ” 本期主题:Apache Pulsar 新分支 3.3 版本发布 Apache Pulsar 新分支 3.3 版本发布:Apache Pulsar 3.3.0[1…

必备:产品经理工作文档大全

产品经理(英文:Product manager,缩写:PM)也称产品企划,是指在公司中针对某项或某类的产品进行规划和管理的人员,主要负责产品的研发、制造、营销、渠道等工作。 产品经理是很难定义的一个角色&a…

DeepSORT(目标跟踪算法)中的数值表格与调参的关系

DeepSORT(目标跟踪算法)中的数值表格与调参的关系 flyfish DeepSORT(目标跟踪算法)中的马氏距离详解(很详细) DeepSORT(目标跟踪算法)中 可以设置阈值进行异常检测或目标跟踪的原…

问题:在信息点统计表中,对于没有信息点的工作区或者房间填写,表明已经分析过该区域 #微信#职场发展#职场发展

问题:在信息点统计表中,对于没有信息点的工作区或者房间填写,表明已经分析过该区域 参考答案如图所示

学历还算能力的一部分吗(机器人方向)

前篇 在人工智能时代,学历还算是能力的一部分吗? 之前写过一篇,现在感觉应该是不严谨,不准确的。 AI如何看待能力,学历,文凭-CSDN博客 那一篇讨论了:{文凭}⊂{学历}⊂{能力} 本篇 不合格且…

【Echarts系列】带图片的饼图

【Echarts系列】带图片的饼图 序前提说明示例数据格式代码动态旋转图片 序 为了节省后续开发学习成本,这个系列将记录我工作所用到的一些echarts图表。 前提说明 因为饼图中间需要添加图片,所以比较特殊,对于饼图中间数据的对齐很容易出现…

正大国际期货:原油投资出现亏损的五种心理弱点

在原油投资当中,有五种心理弱点最容易导致投资者失败,必须注意加以克服! 盲目胆大心理。 有些投资者从未认真系统地学习过投资理论技巧,也没有经过任何模拟训练,甚至连最起码的投资基础知识都不明白,就贸然的进入原油…

企业管理/市场经营/自我管理,500+个经典职场工具 . rar

​500N个实用管理工具包,精选人力资源从业者必备之132项工具、40个管理者实效管理工具、成功自我管理的29个工具、常见的9种营销分析工具等,成功自我管理必备工具。 与班主任联系,即可获得完整资料包! 1.PEST分析 2.五力分析 3.…

哈尔滨等保如何做?

哈尔滨等保测评是确保信息系统安全稳定运行的重要一环,它涉及到对业务、资产、安全技术和安全管理的全面调研和评估。本文将详细阐述哈尔滨等保测评的实施步骤和注意事项,帮助读者更好地理解和执行等保测评工作。 首先,我们需要明确等保测评的…

Hexo+Github搭建个人博客教程

hexo官网:https://hexo.io/zh-cn/ butterfly 主题设置:https://butterfly.js.org/ GitHub地址:https://github.com/jerryc127/hexo-theme-butterfly 基础命令 初始化博客命令:hexo init “文件名” 开启本地服务(本…

Docker:Docker容器使用

文章目录 容器与宿主机复制容器环境变量设置镜像的导出和导入 由于篇幅原因,把后续的使用搬到这篇来 容器与宿主机复制 启动一个nginx服务 rootVM-24-7-ubuntu:~# docker run --name nginx -p 80:80 -d nginx 7a1578bedd97ffc48e9516d03a148c69e216a30f2d18f2624…

【MySQL】复合查询+表的内外连接

复合查询表的内外连接 1.基本查询回顾2.多表查询3.自连接4.子查询4.1单列子查询4.2多列子查询 5.在from子句中使用子查询6.合并查询7.表的内连和外连7.1内连接7.2外连接7.2.1左外连接 7.2.2右外连接 点赞👍👍收藏🌟🌟关注&#x1…

Java程序设计————从控制台输入

向控制台输入信息可以借助Scanner扫描器类来实现 语法: Scanner input new Scanner(System.in); 提示 (1)在使用Scanner类型之前,需要首先指明Scanner类所在的位置,既通过代码 import java.util.Scanner; &…

超强的文本转语音模型ChatTTS,一键打包,免费使用

超强的文本转语音模型ChatTTS,一键打包,免费使用 项目简介项目亮点安装使用python 代码直接引入一键启动包安装部署 ChatTTS webUI 小结一下 文本转语音(TTS)在生活中的应用非常的广泛,比如有声小说、语音导航&#xf…

电脑安全模式怎么进?详细步骤一学就会!

电脑安全模式是一种特殊的启动模式,加载最少的驱动程序和服务,帮助用户解决系统问题,如驱动程序冲突、病毒感染或系统文件损坏。进入安全模式可以帮助您诊断和修复问题,恢复系统的正常运行。本文将介绍电脑安全模式怎么进的三种方…

长期套餐是不是永久套餐?注意:并不是!

当我们在网上选择流量卡时,除了有短期套餐外,还有不少标注着长期套餐的流量卡,那么,长期套餐是不是永久套餐呢?能一直使用吗? ​ 在这里小编要说一下,长期套餐≠永久套餐 长期套餐就是字面意思…

上海斯歌荣获“2023年度杰出数字化转型方案提供商”奖项

为表彰上海斯歌在各行业的数字化转型事业中所做出的突出贡献,经CIO时代、新基建创新研究院专家组评审认定,授予上海斯歌“2023年度杰出数字化转型方案提供商”奖项。荣获该殊荣,不仅是业界对上海斯歌解决方案专业能力及落地实施能力的又一次认…

字符编码字符集那些事

此篇文章仅为网上资料的汇总,方便自己查询使用,原文如下: 参考文章1:一文读懂字符编码 参考文章2:菜鸟教程字符集 参考文章3:百度字符集 参考文章4:一个线上BUG彻底搞懂MySQL字符集,工作也快搞丢了 参考文章5:深入理解MySQL字符集…