升级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。其他代码就不用再修改了

XML 复制代码
<!-- 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>
相关推荐
IT古董14 天前
【权限管理】Apache Shiro学习教程
java·apache·shiro·权限
成为大佬先秃头15 天前
Springboot整合Shiro使用yml文件管理Urls
java·spring boot·后端·shiro
成为大佬先秃头20 天前
安全框架:Apache Shiro
spring boot·安全·apache·shiro
威哥爱编程3 个月前
适合才最美:Shiro安全框架使用心得
java·shiro·javaee
菠萝咕噜肉i3 个月前
SpringBoot+Shiro权限管理
java·spring boot·后端·shiro
昵称为空C4 个月前
SpringBoot集成Shiro权限+Jwt认证
spring boot·shiro
杨同学technotes6 个月前
【译】Apache Shiro介绍
后端·安全·shiro
一只特立独行的猪6117 个月前
Shiro框架2
安全·shiro
shyの同学7 个月前
分布式Shiro,SpringBoot项目Shiro整合Redis
spring boot·redis·分布式·shiro