SpringBoot从零整合轻量安全框架Shiro

简介

Apache Shiro是一个简单、灵活且强大的Java安全框架,用于提供身份验证、授权、加密和会话管理等安全功能。它的设计理念是无侵入性,使得它可以轻松地与任何Java应用程序集成。Shiro提供了一系列内建的安全组件,如Subject(表示当前用户)、SecurityManager(管理所有安全操作)、Realm(与安全数据交互)等。通过这些组件,开发者可以快速实现用户身份验证、授权和会话管理。Shiro还提供了灵活的插件机制和可扩展的API,支持自定义功能和数据源集成。总体而言,Apache Shiro为Java开发者提供了一个全面且易于使用的安全解决方案,适用于各种应用场景,从Web应用程序到企业级应用,都能轻松地添加安全保护。

框架对比

Shiro(Apache Shiro)和Spring Security都是流行的安全框架,它们都提供了一系列的安全功能来帮助开发者保护应用程序。选择使用哪一个框架通常取决于项目的需求和开发者的偏好。以下是Shiro和Spring Security之间的一些主要比较点:

Apache Shiro

  1. 简单性和灵活性:Shiro设计的目标之一是提供一个简单、直观且灵活的安全框架。它的API设计是直观的,使得开发者可以快速地集成和使用。
  2. 无侵入性:Shiro可以轻松地与任何Java应用程序集成,而不需要大量的配置。这使得它在微服务和其他轻量级应用程序中非常受欢迎。
  3. 内建功能:Shiro提供了许多内建的安全功能,如身份验证、授权、加密和会话管理等。
  4. 社区支持:虽然相对于Spring Security来说,Shiro的社区规模可能较小,但它仍然有一个活跃的社区,提供各种教程、文档和支持。

Spring Security

  1. 深度整合:Spring Security是Spring框架的一部分,因此它与Spring生态系统的其他组件(如Spring Boot、Spring MVC等)有深度的整合,提供了更加一致和完善的体验。
  2. 强大的功能:Spring Security提供了一套全面的安全功能,包括基于角色的授权、方法级别的安全、OAuth支持、单点登录(SSO)等。
  3. 大型社区和广泛支持:由于Spring的流行性,Spring Security有一个非常庞大和活跃的社区。这意味着你可以轻松地找到大量的资源、教程和第三方库。
  4. 复杂性和学习曲线:尽管Spring Security功能强大,但它的配置和使用可能比Shiro复杂一些,特别是对于新手来说。

总结

Shiro 适合那些需要快速集成和简单使用的项目,特别是轻量级应用或者希望避免复杂配置的项目。

Spring Security 适合大型、复杂的企业级应用,特别是那些已经使用或计划使用Spring框架的项目,因为它提供了深度的整合和更多的高级功能。

因此小鹿认为:对于初学者或者一些个人开发的项目来说,Shiro框架提供的安全性完全是足够用的。

开始整合

首先在项目中引入依赖

image-20240424172542704

这里需要注意的是:Shiro框架所需要的依赖原则上只有第一个,第二个依赖只是因为小鹿所写的代码恰好需要这个依赖而已。如果你接下来需要跟着小鹿一步一步实现的话,小鹿建议你和我一样将该依赖进行导入

除此以外还需要引入redis和JPA,这两者的作用主要是结合数据库查询用户和Token存储,另外所需要用到的业务插件我在这里也会提到。

<!--JPA-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>
        <!--JDBC-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <!--lombok-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
        <!-- shiro-->
        <dependency>
            <groupId>org.apache.shiro</groupId>
            <artifactId>shiro-spring</artifactId>
            <version>1.3.2</version>
        </dependency>
        <!--mysql-connector-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.27</version>
            <scope>runtime</scope>
        </dependency>
        <!-- druid-spring-boot-starter -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.10</version>
        </dependency>

        <!-- commons-lang -->
        <dependency>
            <groupId>commons-lang</groupId>
            <artifactId>commons-lang</artifactId>
            <version>2.6</version>
        </dependency>

        <!--redis-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>io.lettuce</groupId>
                    <artifactId>lettuce-core</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

				<dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.9.8</version>
        </dependency>

        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
        </dependency
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

露露唯一真爱粉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值