升级springboot3.2集成shiro的问题

         由于之前的springcloud相关版本太久,很多新功能无法使用,所以打算抽时间把代码的版本做一下升级。使用最新版的springboot3.2,发现shiro过滤器无效。经检查发现原因:

        springboot3.x使用的是JDK17,从jdk8以后javax.servlet的相关代码包名改成了jakarta.servlet,shiro-spring的版本1.7,使用的仍然是javax.servlet,在ShiroFilter中因引入的servlet不一致,导致无法解析。首先想到的是升级shiro相关jar包,从maven中找到最新的版本2.0.1发现,shiro对应的最新springboot版本仍是2.X,使用的也还是javax.servlet。

        通过一下方法,排除javax.servlet,引入jakarta的依赖。这样就可以了。

注意:

在修改了maven依赖后,一定要检查一下maven其他地方是否引入的还有javax.servlet包,有的话都排除掉,然后将代码中javax.servlet的引用,替换为jakarta.servlet。其他代码就不用再修改了

<!-- shiro -->
<dependency><groupId>org.apache.shiro</groupId><artifactId>shiro-spring</artifactId><classifier>jakarta</classifier><version>2.0.1</version><!-- 排除仍使用了javax.servlet的依赖 --><exclusions><exclusion><groupId>org.apache.shiro</groupId><artifactId>shiro-core</artifactId></exclusion><exclusion><groupId>org.apache.shiro</groupId><artifactId>shiro-web</artifactId></exclusion></exclusions>
</dependency>
<!-- 引入适配jakarta的依赖包 -->
<dependency><groupId>org.apache.shiro</groupId><artifactId>shiro-core</artifactId><classifier>jakarta</classifier><version>2.0.1</version>
</dependency>
<dependency><groupId>org.apache.shiro</groupId><artifactId>shiro-web</artifactId><classifier>jakarta</classifier><version>2.0.1</version><exclusions><exclusion><groupId>org.apache.shiro</groupId><artifactId>shiro-core</artifactId></exclusion></exclusions>
</dependency>

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

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

相关文章

视频智能解析:Transformer模型在视频理解的突破性应用

视频智能解析&#xff1a;Transformer模型在视频理解的突破性应用 随着人工智能技术的飞速发展&#xff0c;视频理解已成为计算机视觉领域的一个热点问题。Transformer模型&#xff0c;以其在处理序列数据方面的强大能力&#xff0c;已经被广泛应用于视频理解任务中。本文将深…

Github 2024-07-11 Go开源项目日报 Top10

根据Github Trendings的统计,今日(2024-07-11统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Go项目10Solidity项目1Python项目1frp: 一个开源的快速反向代理 创建周期:2946 天开发语言:Go协议类型:Apache License 2.0Star数量:75872 …

Spring的bean的生命周期——bean的创建与销毁

1、生成类信息map 扫描包&#xff0c;用asm技术获取类信息&#xff0c;打了ComponentScancomponentservice等注解的类会放入map。key是类名&#xff0c;value是beanDefinition类的基本信息 2、加载类 context.getBean("userService") 从类信息map中获取beanDefin…

SSRF漏洞深入利用与防御方案绕过技巧

文章目录 前言SSRF基础利用1.1 http://内网资源访问1.2 file:///读取内网文件1.3 dict://探测内网端口 SSRF进阶利用2.1 Gopher协议Post请求2.2 Gopher协议文件上传2.3 GopherRedis->RCE2.4 JavaWeb中的适用性&#xff1f; SSRF防御绕过3.1 Url黑名单检测的绕过3.2 Url白名单…

对controller层进行深入学习

目录 1. controller层是干什么的&#xff1f;1.1 controller原理图1.2 controller层为什么要存在&#xff1f;1.2.1 分离关注点1.2.2 响应HTTP请求1.2.3 数据处理与转换1.2.4 错误处理与状态管理1.2.5 流程控制1.2.6 依赖注入与测试 1.3 controller层的优点1.3.1 多端支持1.3.2…

Gin框架自定义路由

Gin框架是一个用Go语言&#xff08;Golang&#xff09;编写的Web框架&#xff0c;它提供了灵活且高效的路由系统。在Gin框架中&#xff0c;自定义路由是一个基础且重要的操作&#xff0c;它允许开发者定义应用程序如何处理不同的HTTP请求。以下是自定义路由的详细步骤和方法&am…

Linux虚拟化大师:使用 KVM 和 QEMU 进行高级虚拟化管理

Linux 虚拟化大师&#xff1a;使用 KVM 和 QEMU 进行高级虚拟化管理 虚拟化技术是现代数据中心的核心技术之一&#xff0c;它可以将一台物理服务器分割成多个虚拟机&#xff0c;从而提高资源利用率&#xff0c;降低成本&#xff0c;并增强系统的灵活性和可扩展性。KVM&#xf…

C++ | Leetcode C++题解之第225题用队列实现栈

题目&#xff1a; 题解&#xff1a; class MyStack { public:queue<int> q;/** Initialize your data structure here. */MyStack() {}/** Push element x onto stack. */void push(int x) {int n q.size();q.push(x);for (int i 0; i < n; i) {q.push(q.front());…

C++ 【 Open3D 】 点云按高程进行赋色

一、 Open3D中根据点云的高程度信息为点云中的每个点附上颜色&#xff0c;并保存颜色渲染结果&#xff01; #include<iostream> #include<open3d/Open3D.h>using namespace std;int main() {//-------------------------------读取点云--------------------------…

nasa数据集——1 度网格单元的全球月度土壤湿度统计数据

AMSR-E/Aqua level 3 global monthly Surface Soil Moisture Averages V005 (AMSRE_AVRMO) at GES DISC GES DISC 的 AMSR-E/Aqua 第 3 级全球地表土壤水分月平均值 V005 (AMSRE_AVRMO) AMSR-E/Aqua level 3 global monthly Surface Soil Moisture Standard Deviation V005 (…

优化 .NET Core 应用程序的安全性和性能以应对高负载

一. .NET Core 中的安全措施 1. 身份验证和授权 实施强大的身份验证和授权机制是保护应用程序资源的基础。.NET Core 内置支持各种身份验证方案&#xff0c;例如 JWT&#xff08;JSON Web 令牌&#xff09;、OAuth 和 OpenID Connect。通过配置身份验证中间件并定义授权策略&…

vue中el-table单元格复制功能

一、单页面中使用 1.在el-table上绑定单击事件 cell-click“copyText” 或双击事件 cell-dblclick“copyText” 注&#xff1a;cell-dblclick函数有四个参数&#xff0c;分别是row, column, cell, event&#xff1b; row&#xff1a;可看到被其操作单元格所在行的所有的数据&…

【IT领域新生必看】解锁 `final` 关键字的秘密:Java 编程中的终极武器

文章目录 引言什么是 final 关键字&#xff1f;一、 final 变量final 局部变量final 实例变量final 静态变量 二、 final 方法三、 final 类四、 final 关键字的实际应用1. 定义常量2. 防止方法被重写3. 创建不可变类4. 优化性能 五、 final 的一些常见误区1. final 变量不能在…

力扣995.K连续位的最小翻转次数

力扣995.K连续位的最小翻转次数 因为翻转顺序改变不影响最终结果 因此从头找每个位置翻转后的结果如果为0 将从它开始的K长的数组翻转 class Solution {public:int minKBitFlips(vector<int>& nums, int k) {int n nums.size();vector<int> s(n1);int res0…

05.FFMPEG日志系统

一、头文件 #include <libavutil/log.h> 二、常用函数 1、av_log_set_level void av_log_set_level(int level);该函数用于设置全局日志级别。 2、av_log void av_log(void* avcl, int level, const char* fmt, ...);该函数用于输出日志消息。avcl 参数是相关联的上下…

uboot学习:(三)目录分析

目录 目录分析 uboot自带 编译生成的文件 分析之前需要编译一次uboot源码&#xff0c;编译之后的uboot源码会多出来很多文件 目录分析 uboot自带 api 与硬件无关的API函数arch 与架构体系有关的代码 里面有x86,arm等架构文件夹 架构文件夹里面有cpu&#xff0c;设备树等…

使用 Nuxt 3 搭建国际官网

搭建国际官网是一个复杂的任务,涉及多方面的技术和策略。在这篇文章中,我们将探讨如何使用 Nuxt 3 框架搭建一个国际化官网,并展示其在 SEO 优势和全栈可维护性方面的卓越性能。 使用 Nuxt 3 搭建国际官网 1. Nuxt 3 简介 Nuxt 3 是一个基于 Vue 3 和 Vite 的框架,旨在构…

大数据面试题之ElasticSearch(2)

目录 ElasticSearch的单播、多播和广播 什么是Zen Discovery机制 ElasticSearch和Solr主要区别 ElasticSearch和Solr各自适用于哪些场景 Elasticsearch的同类产品有哪些 Elasticsearch有哪些主要应用场景 Elasticsearch 中执行搜索的各种可能方式有哪些 Elasticsearch 中…

UWB系列教程(一)UWB简介

UWB系列教程&#xff08;一&#xff09;&#xff1a;UWB简介 超宽带&#xff08;Ultra-Wideband, UWB&#xff09;技术作为一种先进的无线通信技术&#xff0c;近年来在多个领域展现出了巨大的潜力和应用前景。 什么是超宽带&#xff08;UWB&#xff09;技术&#xff1f; 超…

Java中的数据缓存技术及其应用

Java中的数据缓存技术及其应用 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 在现代应用程序中&#xff0c;数据缓存是一种重要的技术手段&#xff0c;用于提…