返回

用Shiro策略保护SpringBoot应用程序

后端

概述

SpringBoot是一个流行的Java框架,可以快速简便地构建Web应用程序。SpringBoot也是一个非常灵活的框架,它允许你使用不同的库来实现应用程序的安全策略。Shiro是一个流行的Java安全框架,它提供了强大的安全功能,包括身份验证、授权和密码加密。

依赖介绍

Spring Boot应用程序中整合Shiro依赖,需要导入相关依赖。
在pom.xml中添加如下依赖:

<dependency>
  <groupId>org.apache.shiro</groupId>
  <artifactId>shiro-spring-boot-starter</artifactId>
  <version>1.4.0</version>
</dependency>

组件介绍

Shiro包含以下核心组件:

  • SecurityManager: 管理应用程序的安全策略
  • Realm: 验证和授权应用程序用户的组件
  • Filter: 拦截请求并执行安全策略的组件
  • Subject: 代表应用程序用户的组件

SecurityManager组件和Realm组件设计

SecurityManager组件

SecurityManager组件是Shiro的核心组件,它负责管理应用程序的安全策略。SecurityManager组件包含一个Realm组件,Realm组件负责验证和授权应用程序用户的身份。

Realm组件

Realm组件是一个接口,它负责验证和授权应用程序用户的身份。Shiro提供了多种Realm组件的实现,包括JdbcRealm、IniRealm和JndiRealm等。

Spring Boot Shiro 整合(新版)

第一步:导入相关依赖

<dependency>
  <groupId>org.apache.shiro</groupId>
  <artifactId>shiro-spring-boot-starter</artifactId>
  <version>1.4.0</version>
</dependency>

第二步:配置shiro

在application.yml中配置shiro:

shiro:
  # 开启Shiro Web支持
  web:
    enabled: true
  # 加密算法(实际中推荐使用MD5)
  crypto:
    hash: md5
    hashIterations: 2
  # 配置DefaultSecurityManager的Realm
  realm:
    jdbc:
      authenticationQuery: select password from users where username = ?
      userRolesQuery: select role_name from user_roles where username = ?

第三步:编写shiro相关代码

在项目中编写shiro的相关代码:

@Configuration
public class ShiroConfig {
    @Bean
    public SecurityManager securityManager() {
        DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
        securityManager.setRealm(jdbcRealm());
        return securityManager;
    }

    @Bean
    public JdbcRealm jdbcRealm() {
        JdbcRealm realm = new JdbcRealm();
        realm.setDataSource(dataSource());
        return realm;
    }

    @Bean
    public DataSource dataSource() {
        return DataSourceBuilder.create()
                .url("jdbc:mysql://localhost:3306/shiro")
                .username("root")
                .password("root")
                .build();
    }
}

结语

本指南介绍了如何使用SpringBoot结合Shiro策略实现SpringBoot应用程序的安全策略保护。它将帮助你了解Shiro的基础知识,如何配置SpringBoot和Shiro,以及如何使用Shiro的安全策略保护应用程序。