springboot+AOP+自定义注解+RBAC自定义操作权限管理02

springboot+AOP+自定义注解+RBAC自定义操作权限管理02!经过上一次的凑话部署,我们这一次,增加了一个后端管理系统菜单栏的访问权限的数据表。用角色表,和这张菜单栏的数据表进行映射。不同的角色,可以看见不同的菜单栏目。


 这个就是菜单栏的表格设计情况。

这个就是角色表和菜单栏表格的映射表(中间表)。

经过这次修改后,我们的另外一个表就需要进行一些稍微的变化 。因为我们已经具备了角色和菜单栏的关系组合了。不再需要像之前那样笨拙的一点一点设计了。

 

如图,不同的角色,对应各自不同的menu_id。角色各自有各自的菜单功能组合了。

 

如图,我们设计了很多菜单的入口,所有的菜单入口地址都在这张表内。

哪个角色想有权限访问它们,只需要在关系表内加入数据即可。


package com.yrl.managedemo.bean;

import lombok.Data;

import javax.persistence.*;
import java.util.List;

@Data
@Entity
@Table(name = "tb_role")
public class Role {
    @javax.persistence.Id
    @org.springframework.data.annotation.Id
    @GeneratedValue(strategy= GenerationType.IDENTITY)//主键生成策略
    private Integer id;

    @Column(name="role_name", nullable=false)
    private String  roleName;

    @ManyToMany(fetch = FetchType.LAZY)
    @JoinTable(name = "tb_role_menu",joinColumns = {@JoinColumn(name = "role_id")},inverseJoinColumns = {@JoinColumn(name = "menu_id")})
    List<Menu> menuList;
}

 由于我们增就了角色和菜单的映射,所以,role角色的实体类里面应该新增一个list<Menu>集合。来存储对应的菜单情况。

package com.yrl.managedemo.bean;

import lombok.Data;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;

@Data
@Entity(name = "tb_menu")
public class Menu {
    @javax.persistence.Id
    @org.springframework.data.annotation.Id
    @GeneratedValue(strategy= GenerationType.IDENTITY)//主键生成策略
    private Integer id;


    private String menu;


}

这个是菜单的实体类。毕竟简单。没有什么好多说的。


@GetMapping("/list")
    public Result<User> getUser(){
        Result<User> result = new Result<>();
        List<User> userList = userService.getAllUser();
        for(User u:userList){
            System.out.println("用户id"+u.getId());
            System.out.println("用户名字"+u.getName());
            //获取用户权限的列表信息
            List<Role> roleList = u.getRoleList();
            for(Role role :roleList){
                System.out.println("用户的角色信息:"+role.getRoleName()+";");
                System.out.println("******该用户可以访问的菜单栏目start:*****");
                List<Menu> menuList = role.getMenuList();
                for(Menu menu :menuList){
                    System.out.println(menu.getMenu()+";");
                }
                System.out.println("******该用户可以访问的菜单栏目end:*****");
            }

        }
        result.setCode(200);
        result.setMsg("信息查询成功");
        result.setData(userList.get(0));
        return result;
    }

我们再次修正完善了一下,返回一个结果对象,到前端就可以看见返回的user信息了。里面自然也就包含了对应的菜单权限和角色情况了。


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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Maya------创建多边形工具

配合导入图像使用 Tab键可以删除一个点&#xff01; 模型不能超过4边面&#xff01;多切割工具进行连接&#xff01; 15.maya常用命令5.创建多边形工具 反转 双显 挤出_哔哩哔哩_bilibili

不做烧钱买卖,2025年实现双百万量产!奇瑞和大卓智能「不客气」了

随着造车从技术思维向用户思维转变&#xff0c;车企的自研边界逐渐清晰。 一方面&#xff0c;前两年各车企围绕高阶智驾制定的目标&#xff0c;基本都没有达到预期。尤其是疯狂烧钱堆料&#xff0c;并没能换来销量暴涨和C端消费者的满意度&#xff0c;也让部分车企也开始反思&…

电子电器架构——车载网关转发buffer心得汇总

电子电器架构——车载网关转发buffer心得汇总 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力…

leetcode-704.二分查找

题目 给定一个 n 个元素有序的&#xff08;升序&#xff09;整型数组 nums 和一个目标值 target &#xff0c;写一个函数搜索 nums 中的 target&#xff0c;如果目标值存在返回下标&#xff0c;否则返回 -1。 示例 1: 输入: nums [-1,0,3,5,9,12], target 9输出: 4 解释: 9 …

Unity使用反向遮罩实现镂空shader

实现步骤&#xff1a; 1&#xff0c;创建两个材质球&#xff0c;遮罩层的属性如下&#xff1a; 被遮罩层的属性如下&#xff1a; 2&#xff0c;使用两张image&#xff0c;遮罩层在父节点&#xff0c;被遮罩层在子节点&#xff0c;然后分别添加材质球与镂空图片 实现效果如下&a…

使用AnimeGAN2将照片动漫化--入门

使用AnimeGAN2将照片动漫化--入门 1. 环境准备2. 使用3. 总结 1. 环境准备 首先下载AnimeGAN2:https://github.com/TachibanaYoshino/AnimeGANv2.git 然后使用conda 创建一个python3.6的环境conda create -n pyt36 python3.6&#xff1a; 创建一个requirements.txt文件&am…

Linux文本三剑客-awk

一、awk的介绍&#xff1a; 1.awk的简介&#xff1a; AWK 是一种处理文本文件的语言&#xff0c;是一个强大的文本分析工具 可以在无交互的模式下实现复杂的文本操作 相较于sed常作用于一整个行的处理&#xff0c;awk则比较倾向于一行当中分成数个字段来处理&#xff0c;因…

骨传导耳机是什么?使用骨传导耳机可以保护听力吗?

骨传导耳机是一种特殊的蓝牙耳机&#xff0c;通过人体骨骼来传递声音&#xff0c;可以绕过耳道和耳膜直接传达音频到听者的内耳&#xff0c;开放双耳的佩戴方式可以在享受音乐或通话的同时保持对周围环境的感知&#xff0c;这种设计在户外活动或运动等场景下的使用尤为实用&…

Qt关于qss文件的添加使用

把ui设计得更加的养眼&#xff0c;肯定需要对控件的属性进行设置&#xff0c;qt中就是关于qss文件的使用。 那么如何创建和添加qss文件呢 1.新建一个文本文件的txt 2.将文本文件的后缀改为qss&#xff08;类比html&#xff09; 3.放置到项目的资源文件夹下 4.添加资源文件 5.在…

分治 (地毯填补问题)

地毯填补问题 题目描述 相传在一个古老的阿拉伯国家里&#xff0c;有一座宫殿。宫殿里有个四四方方的格子迷宫&#xff0c;国王选择驸马的方法非常特殊&#xff0c;也非常简单&#xff1a;公主就站在其中一个方格子上&#xff0c;只要谁能用地毯将除公主站立的地方外的所有地…

DevOps落地笔记-05|非功能需求:如何有效关注非功能需求

上一讲主要介绍了看板方法以及如何使用看板方法来解决软件研发过程中出现的团队过载、工作不均、任务延期等问题。通过学习前面几个课时介绍的知识&#xff0c;你的团队开始源源不断地交付用户价值。用户对交付的功能非常满意&#xff0c;但等到系统上线后经常出现服务不可用的…

【正点原子STM32】STM32时钟系统(时钟树、时钟源、分频器和倍频系数、锁相环、STM32CubeMX时钟树、系统时钟配置步骤)

一、认识时钟树 1.1、什么是时钟&#xff1f;1.2、认识时钟树&#xff08;F1&#xff09;1.3、认识时钟树&#xff08;F4&#xff09;1.4、认识时钟树&#xff08;F7&#xff09;1.5、认识时钟树&#xff08;H7&#xff09; 二、配置系统时钟 2.1、系统时钟配置步骤2.2、外设…

基于鲸鱼优化的knn分类特征选择算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 4.1 鲸鱼优化算法&#xff08;WOA&#xff09; 4.1.1 包围猎物 4.1.2 螺旋式搜索 4.1.3 更新策略 4.2 K近邻&#xff08;KNN&#xff09;分类器 4.3 基于WOA的KNN分类特征选择算法 5.完…

[C#][opencvsharp]winform实现自定义卷积核锐化和USM锐化

【锐化介绍】 图像锐化(image sharpening)是补偿图像的轮廓&#xff0c;增强图像的边缘及灰度跳变的部分&#xff0c;使图像变得清晰&#xff0c;分为空间域处理和频域处理两类。图像锐化是为了突出图像上地物的边缘、轮廓&#xff0c;或某些线性目标要素的特征。这种滤波方法…

如何在centos7上配置为桥接模式

一、打开虚拟机的设置页面&#xff0c;设置虚拟机桥接模式如图&#xff1a;选择桥接模式&#xff08;复制物理网络连接可选&#xff09; 二、net0对应桥接模式的配置&#xff0c;如下方式选择 三、 在 CentOS 7 中&#xff0c;通过编辑网络配置文件来配置网络参数。找到 /etc…

IO多路复用机制——select、poll、epoll的原理和区别

select&#xff0c;poll&#xff0c;epoll都是IO多路复用的机制。I/O多路复用就通过一种机制&#xff0c;可以监视多个描述符&#xff0c;一旦某个描述符就绪&#xff08;一般是读就绪或者写就绪&#xff09;&#xff0c;能够通知程序进行相应的读写操作。但select&#xff0c;…

使用JMeter+Grafana+Influxdb搭建可视化性能测试监控平台

【背景说明】 使用jmeter进行性能测试时&#xff0c;工具自带的查看结果方式往往不够直观和明了&#xff0c;所以我们需要搭建一个可视化监控平台来完成结果监控&#xff0c;这里我们采用三种JMeterGrafanaInfluxdb的方法来完成平台搭建 【实现原理】 通过influxdb数据库存储…

共性化异步任务处理

背景 考虑到现有业务很多依赖于MQ的方式进行&#xff0c;这种方式需要依赖于MQ&#xff0c;发送消息到mq和消费mq消息时需要了解mq消息结构进行相应处理&#xff1b; 对于后续对同样的事件做其他处理的人如不能提前了解到已有相应消息发到了mq就得再发一次消息到mq等。 图1.1…

Paper - 蛋白质刚性对接(Rigid Protein-Protein Docking)的 ElliDock 算法

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/135973005 论文&#xff1a;ElliDock: Rigid protein-protein docking via equivariant elliptic-paraboloid interface prediction, ICLR 2024 …

【复现】智邦国际ERP SQL注入漏洞_36

目录 一.概述 二 .漏洞影响 三.漏洞复现 1. 漏洞一&#xff1a; 四.修复建议&#xff1a; 五. 搜索语法&#xff1a; 六.免责声明 一.概述 智邦国际“一体化ERP”各类产品线&#xff0c;通过一体化ERP经典型、行业型、简易型、云应用、SAAS平台等产线产品&#xff0c;提…