Spring Boot 中,可以通过 ShiroFilterFactoryBean ,给出import
时间: 2023-06-27 09:07:50 浏览: 155
可以在 Spring Boot 中使用 Shiro 进行权限控制。要使用 ShiroFilterFactoryBean,需要在 pom.xml 文件中添加 Shiro 和 Spring Boot Starter Security 的依赖:
```xml
<dependency>
<groupId>org.apache.shiro</groupId>
<artifactId>shiro-spring</artifactId>
<version>1.4.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
```
然后,在 Spring Boot 的配置文件中进行 Shiro 的配置,比如:
```java
@Configuration
public class ShiroConfig {
@Bean
public ShiroFilterFactoryBean shiroFilter() {
// 创建 ShiroFilterFactoryBean
ShiroFilterFactoryBean shiroFilter = new ShiroFilterFactoryBean();
// 设置 SecurityManager
shiroFilter.setSecurityManager(securityManager());
// 配置过滤器
Map<String, String> filterChainDefinitionMap = new LinkedHashMap<>();
// 公共资源放行
filterChainDefinitionMap.put("/login", "anon");
filterChainDefinitionMap.put("/logout", "logout");
filterChainDefinitionMap.put("/static/**", "anon");
// 进行身份认证才能访问的资源
filterChainDefinitionMap.put("/**", "authc");
// 设置过滤器链
shiroFilter.setFilterChainDefinitionMap(filterChainDefinitionMap);
return shiroFilter;
}
@Bean
public SecurityManager securityManager() {
// 创建 SecurityManager
DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();
// 设置 Realm
securityManager.setRealm(shiroRealm());
return securityManager;
}
@Bean
public ShiroRealm shiroRealm() {
// 创建 Realm
ShiroRealm shiroRealm = new ShiroRealm();
// 设置密码匹配器
shiroRealm.setCredentialsMatcher(credentialsMatcher());
return shiroRealm;
}
@Bean
public CredentialsMatcher credentialsMatcher() {
// 创建密码匹配器
HashedCredentialsMatcher credentialsMatcher = new HashedCredentialsMatcher();
// 设置加密算法
credentialsMatcher.setHashAlgorithmName("md5");
// 设置散列次数
credentialsMatcher.setHashIterations(1);
return credentialsMatcher;
}
}
```
其中,ShiroFilterFactoryBean 用于创建 Shiro 过滤器,securityManager 用于管理 Shiro 的安全策略,ShiroRealm 用于获取用户的身份信息和权限信息。在上面的代码中,我们配置了一个简单的 Shiro 过滤器链,对所有的请求进行身份认证。具体的认证过程和权限控制可以在 ShiroRealm 中实现。
阅读全文