返回
用Shiro策略保护SpringBoot应用程序
后端
2024-02-11 10:42:33
概述
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的安全策略保护应用程序。