【重磅开源】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,一经查实,立即删除!

相关文章

Spring (50)Ribbon

Netflix Ribbon是一个客户端负载均衡器,它提供了一系列完善的配置项:如连接超时、重试、负载均衡策略等。在微服务架构中,Ribbon通常被用于调用其它服务,通过负载均衡选择一个最佳的服务实例进行交互。Spring Cloud将Ribbon整合在…

【深度学习】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。本…

GPS原理与接收机设计

将伪码中的一位二进制数称为一个码片,或者称为一个码元,一个码片的持续时间称为码宽,单位时间内所包含的码片数目称为码率。 GPS信号中的C/A码属于金码,能产生金码的一对m序列称为优选m序列对。通过调节其中一个m序列的延时&…

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(目标跟踪算法)中 可以设置阈值进行异常检测或目标跟踪的原…

在Ubuntu20.04上安装Apache、MySQL和PHP的基本步骤

1安装Apache: sudo apt update sudo apt install apache2 2安装MySQL: sudo apt install mysql-server 3安装PHP以及常用扩展: sudo apt install php libapache2-mod-php php-mysql 4配置Apache和PHP: sudo nano /etc/apac…

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

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

vue面试题五

一、请解释Vue中的keep-alive组件是什么,以及它的作用? Vue中的keep-alive是一个内置组件,它主要的作用是在组件切换过程中将状态保留在内存中,以防止重复渲染DOM,从而提高页面性能。keep-alive包裹动态组件时&#x…

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

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

PAT 1061 Dating(20分)未完成

原题链接:PAT 1061 Dating(20分) Sherlock Holmes received a note with some strange strings: Lets date! 3485djDkxh4hhGE 2984akDfkkkkggEdsb s&hgsfdk d&Hyscvnm. It took him only a minute to figure out that those strange…

【Echarts系列】带图片的饼图

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

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

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

【Qt】Qt中QJsonArray类

01. QJsonArray类简介 ​ QJsonArray封装了JSON数组。 ​ JSON数组是值的链表,可以插入和删除QJsonValue。 ​ QJsonArray与QVariantList可以相互转换。QJsonArray可以用size(), insert(), removeAt()进行操作,还可以用标准C的迭代器模式来迭代其内容…

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

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

哈尔滨等保如何做?

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

回溯算法练习题(2024/6/10)

1组合 给定两个整数 n 和 k,返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 示例 1: 输入:n 4, k 2 输出: [[2,4],[3,4],[2,3],[1,2],[1,3],[1,4], ] 示例 2: 输入:n …

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…