Apache Shiro 是一个强大且易用的Java安全框架,提供了身份验证、授权、密码学和会话管理等功能。它被广泛用于保护各种类型的应用程序,包括Web应用、桌面应用、RESTful服务、移动应用和大型企业级应用。
Apache Shiro 没有 Spring Security 那么多晦涩的概念和术语,其原理非常清晰易懂,也非常容易集成到自己的项目中。
SpringBoot 2.x 已于去年底 End of life,升级到 SpringBoot 3 成了一件必须要做的事情,而SpringBoot 3 在集成 Shiro 时,有一些坑,也有一些与之前不同之处。
本文重点介绍不同之处,确保可以平滑的迁移到 SpringBoot 3。
SpringBoot 3 变化
Spring Boot 3.0 是一次重大修订,我们必须先要了解以下几点:
- Java版本的最低要求:Java 17
- 不再支持 Java EE API
- 所有底层依赖项从 Java EE 迁移到了 Jakarta EE API,以 Jakarta EE 9 为基准并支持 Jakarta EE 10
请确保你的项目,满足上述条件,其影响最大的莫过于 Java EE 到 Jakarta EE 的变化。
敲黑板,从开发的角度来说,Java EE 到 Jakarta EE 仅是包名的变化,Coding时使用到的类都是一样的,API也是一样的,没啥实质性变更。
Apache Shiro 变化
Shiro 从2.x版本开始,支持Spring Boot 3,但无论你是使用1.x的Starter,还是2.x的Starter,其默认还是使用的 JavaEE API ,也就是说,按照以往的配置方式,是无法集成到 Spring Boot 3 的,会报 ClassNotFoundException 异常。
总之,Shiro 对 Spring Boot 3 的快速集成的支持度还不是那么的完善,官网的介绍也是寥寥几句,参考价值不大。但可以肯定的是,Shiro 2.x 是完全支持 Spring Boot 3,只是稍微麻烦一些而已。
SpringBoot3 集成 Shiro的 POM 配置
集成的总体思路就是将Shiro中的 JavaEE 依赖 替换为 Jakarta EE,直接上代码:
Maven pom.xml 配置如下:
<!-- Shiro -->
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-spring-boot-starter</artifactId>
<classifier>jakarta</classifier>
<version>2.0.1</version>
<exclusions>
<exclusion>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-crypto-cipher</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-crypto-hash</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-web</artifactId>
</exclusion>
<exclusion>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-spring</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-web</artifactId>
<classifier>jakarta</classifier>
<version>2.0.1</version>
</dependency>
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-spring</artifactId>
<classifier>jakarta</classifier>
<version>2.0.1</version>
</dependency>
这段 pom 代码是核心,也可以看出,较之前相比,配置稍微复杂一些,但项目中的Code、yml配置,和之前是一模一样的,只需把 Maven 坐标修改一下,即可完美实现与SpringBoot 3的集成。
知晓了原理,是不是 So Easy
更多 Shiro Yaml 配置,可以参考:https://shiro.apache.org/spring-boot.html#configuration_properties
附录
完整的Spring Boot 3 与 Apache Shiro 集成的源码,可以访问此开源项目 TyFast
至此分享结束!
Enjoy It!
版权归原作者 Sweet锦 所有, 如有侵权,请联系我们删除。