SpringBoot+Shiro权限管理

动态菜单

        动态菜单:系统里面有很多菜单可以进行点击操作,但是不同的角色用户能够操作的菜单肯定是不会相同的,那么,就需要用角色来区分用户,进而区分用户所能看到/操作的菜单。

准备测试数据

        还是使用之前的两个用户,hlliu和t114,hlliu设置为角色1(管理员),t114设置为角色2(客户经理),管理员至少拥有“权限管理”权限,客户管理拥有“营销管理”,“客户管理”等权限

获取动态菜单

        用户登录成功之后,需要获取到用户相应的动态菜单数据,此功能代码前面章节已经实现,在IndexController类的login方法中,具体代码如下:

// 认证(登录)成功
User user = (User) subject.getPrincipal();
// 获取权限
Role role = user.getRole(); // 如果一对多关联不是立即加载,则需要通过用户获取
List<Right> rights = roleService.findRightsByRole(role);
role.getRights().addAll(rights);
session.setAttribute("loginUser", user);

显示动态菜单

 <li class="active"><a><i class="fa fa-home"></i> <span>权限管理</span><span class="fa fa-chevron-down"></span></a><ul class="nav child_menu" style="display: block;"><li class="current-page"><a th:href="@{/user/list}" href="/crm/user/list">用户管理                                                </a></li><li><a href="/role/list">角色管理</a></li></ul></li>

角色管理

        前面我们实现了用户管理,接下来我们实现角色管理,角色管理和用户管理实现的功能差不读,最大的区别在于新增或修改角色时,需要指定角色拥有的权限,这也是角色管理中的一处冲难点。

Model模型开发

1、entity包括Role.java和Right.java,且两个对象是多对多关系,前面已经实现。

2、Repository包括 RoleRepository.Java 和 RightRepository.Java,前面已经实现,且在RoleRepository.java中添加根据角色名称进行模糊查询并分页的方法:

Page<Role> rolePage(String roleName, Page<Role> rolePager);

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

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

相关文章

Unreal5从入门到精通之如何使用C++实现一个剧情系统

前言 说到剧情系统,大家可能会说,UE的关卡序列Sequencer,做剧情不是很方便吗?没错,Sequencer确实方便,而且它可以让你为场景中的角色,物体等创建精确的动画,并使用关键帧来控制他们的运动和状态变化。 它还可以做相机的移动,剪辑,音效,特效等故事情节,相机特效,多…

袋鼠云产品功能更新报告12期|让数据资产管理更高效

本期&#xff0c;我们更新和优化了数据资产平台相关功能&#xff0c;为您提供更高效的产品能力。以下为第12期袋鼠云产品功能更新报告&#xff0c;请继续阅读。 一、【元数据】重点更新 &#xff5c;01 元数据管理优化&#xff0c;支持配置表生命周期 之前系统中缺少一个可以…

将多个commit合并成一个commit并提交

0 Preface/foreword 1 压缩多个commit方法 1.1 git merge --squash 主分支&#xff1a;main 开发分支&#xff1a;test 当前在test分支提交了8个commits&#xff0c;功能已经开发完成&#xff0c;需要将test分支合并到main分支&#xff0c;但是不想在合并时候&#xff0c;看…

大数据新视界 -- 大数据大厂之提升 Impala 查询效率:重写查询语句的黄金法则(下)(4/30)

&#x1f496;&#x1f496;&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎你们来到 青云交的博客&#xff01;能与你们在此邂逅&#xff0c;我满心欢喜&#xff0c;深感无比荣幸。在这个瞬息万变的时代&#xff0c;我们每个人都在苦苦追寻一处能让心灵安然栖息的港湾。而 我的…

我想让AI帮我生成一点不正经的东西……

前言 最近突发奇想&#xff1a;为啥我一定要不断得翻找各种壁纸呢&#xff1f;为啥就不能让AI给我生成一张专属的壁纸&#xff0c;上面有我喜欢的内容&#xff0c;这样&#xff0c;我这张壁纸就是独一无二的了&#xff01; 说干就干&#xff0c;小白默默打开了AI工具…… 点我…

17、电话号码的字母组合-cangjie

题目 17、电话号码的字母组合 思路 输入处理&#xff1a; 接收一个字符串 digits&#xff0c;表示手机键盘上的数字&#xff0c;数字可以对应不同的字母组合。 边界检查&#xff1a; 如果输入字符串 digits 为空&#xff0c;返回一个空的结果列表。 按钮映射&#xff1a; 初…

ZYNQ: AXI DMA 环路测试

环境 vivado 2022 vitis 2022 简介 DMA&#xff0c;即Direct Memory Access&#xff0c;指直接存储器访问。这是一种内存访问技术&#xff0c;允许某些计算机内部的硬件子系统&#xff08;如计算机外设&#xff09;独立地直接读写系统内存&#xff0c;而无需中央处理器&…

动态规划 01背包(算法)

现有四个物品&#xff0c;小偷的背包容量为8&#xff0c;怎么可以偷得价值较多的物品 如: 物品编号&#xff1a; 1 2 3 4 物品容量&#xff1a; 2 3 4 5 物品价值&#xff1a; 3 4 5 8 记f(k,w) ,当背包容量为w,可以偷k件物品…

端到端自动驾驶模型SparseDrive论文阅读笔记

为了进一步的理解模型&#xff0c;方便对模型进行调试&#xff0c;对论文进行了详细的阅读&#xff0c;记录了相关的笔记&#xff0c;和论文阅读批注。 论文阅读批注连接&#xff1a; https://note.youdao.com/s/VC6mDgdZ 笔记如下图&#xff1a;

SAP ABAP开发学习——BAPI

目录 业务对象 概念 ​编辑业务对象浏览 BAPI BAPI的浏览 BAPI的调用 BAPI的确认和返回 BAPI的创建 MM/SD常用BAPI 附加&#xff1a;长文本修改 业务对象 概念 业务对象浏览 进入SWO3查看 双击BUS2012 双击下图上方红色位置可以看到BAPI方法的内容 BAPI BAPI(Busines…

【网络】自定义协议——序列化和反序列化

> 作者&#xff1a;დ旧言~ > 座右铭&#xff1a;松树千年终是朽&#xff0c;槿花一日自为荣。 > 目标&#xff1a;了解什么是序列化和分序列&#xff0c;并且自己能手撕网络版的计算器。 > 毒鸡汤&#xff1a;有些事情&#xff0c;总是不明白&#xff0c;所以我不…

linux 原子操作

首先是为什么要有 原子操作 网上的截图&#xff1a; 不能从C语言来看&#xff0c;要从汇编来看 但是实际的情况有可能是这样。 A进程没有得到想要的结果。 然后是 原子操作的 底层实现 最终会是这段代码&#xff0c;当然只是一个 加一的操作。 static inline void atomic_a…

[MySQL]DQL语句(二)

(一)里面我们以单表查询为基础&#xff0c;讲了DQL语句的基础&#xff0c;这篇我们来讲多表查询。 联合查询 联合查询的作用是合并结果集&#xff0c;也就是把两个select语句的查询结果合并到一起。合并结果集的方式有两种&#xff0c;分别是去重和不去重。语法格式为: SELEC…

2-143 基于matlab-GUI的脉冲响应不变法实现音频滤波功能

基于matlab-GUI的脉冲响应不变法实现音频滤波功能&#xff0c;输入加噪信号&#xff0c;通过巴特沃斯模拟滤波器脉冲响应不变法进行降噪。效果较好。程序已调通&#xff0c;可直接运行。 下载源程序请点链接&#xff1a;2-143 基于matlab-GUI的脉冲响应不变法实现音频滤波功能…

初学者如何对大模型进行微调?

粗略地说&#xff0c;大模型训练有四个主要阶段&#xff1a;预训练、有监督微调、奖励建模、强化学习。 预训练消耗的时间占据了整个训练pipeline的99%&#xff0c;其他三个阶段是微调阶段&#xff0c;更多地遵循少量 GPU 和数小时或数天的路线。预训练对于算力和数据的要求非…

MySQL—基础学习

对于数据库MySQL的基础学习与Datagrip的使用 1.MySQL概述 &#xff08;1&#xff09;相关概念 数据库 &#xff1a;存储数据的仓库 &#xff08;DB&#xff09; 数据库管理系统&#xff1a;操控和管理数据库的大型软件&#xff08;DBMS&#xff09; SQL&#xff1a;操作关系…

客户案例 | 智原科技利用Ansys多物理场分析增强3D-IC设计服务

Ansys经过认证的半导体解决方案将帮助智原科技缩短2.5D/3D-IC的设计周期&#xff0c;并确保设计符合信号完整性和性能目标 主要亮点 智原科技将使用Ansys RaptorX™片上电磁&#xff08;EM&#xff09;建模解决方案来增强2.5D/3D集成电路&#xff08;IC&#xff09;的先进封装设…

集成框架 -- 自定义二方包 starter

自定义starter 二方包 My-thread-pool-startermy-thread-pool-starter 整体架构 测试 MyTestAppApplication测试工程 my-test-app 结构测试项目的 pom.xml 二方包 My-thread-pool-starter POM 文件 <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi&…

Spring框架的JDBC模板技术

目录 一、JDBC模板类的使用 1.引入依赖 2.测试类 3.运行&#xff0c;查看数据库 二、使用Spring框架来管理模板类 1.配置文件 2.测试类 3.运行&#xff0c;查看数据库 三、Spring框架管理开源的连接池 1.配置开源的连接池 2.将数据库连接的信息配置到属性文件中 3.核…

头歌答案-分布式文件系统HDFS

目录 第1关&#xff1a;HDFS的基本操作 第2关&#xff1a;HDFS-JAVA接口之读取文件 第3关&#xff1a;HDFS-JAVA接口之上传文件 第4关&#xff1a;HDFS-JAVA接口之删除文件 第1关&#xff1a;HDFS的基本操作 # 1. 启动Hadoop start-all.sh # 启动Hadoop集群 # 或使用以…