springboot3.x和jdk17和shiro时配置shiro过滤器不生效ShiroFilterFactoryBean
时间: 2023-06-25 13:07:27 浏览: 238
可以尝试以下步骤:
1 确认是否已经在pom.xml文件中添加了shiro-spring-boot-starter依赖,如果没有,需要添加该依赖。
2. 确认ShiroFilterFactoryBean是否已经被正确配置。可以在application.yml文件或者application.properties文件中添加以下配置:
```
shiro:
filter:
anon: /login/**
authc: /*
loginUrl: /login
successUrl: /
unauthorizedUrl: /401
```
这里的配置表示:/login/** 路径下的请求可以匿名访问,而其他路径的请求都需要进行身份验证。在进行身份验证的时候,如果用户未登录,则会跳转到/login页面,如果验证失败,则会跳转到/401页面。
3. 确认是否已经在配置类中添加了ShiroFilterFactoryBean。例如:
```
@Bean
public ShiroFilterFactoryBean shiroFilterFactoryBean(SecurityManager securityManager) {
ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean();
shiroFilterFactoryBean.setSecurityManager(securityManager);
Map<String, String> filterChainDefinitionMap = new LinkedHashMap<>();
filterChainDefinitionMap.put("/logout", "logout");
filterChainDefinitionMap.put("/static/**", "anon");
filterChainDefinitionMap.put("/login", "anon");
filterChainDefinitionMap.put("/**", "authc");
shiroFilterFactoryBean.setFilterChainDefinitionMap(filterChainDefinitionMap);
return shiroFilterFactoryBean;
}
```
这里的配置表示:/logout路径下的请求会进行注销操作,/static/** 路径下的请求可以匿名访问,/login路径下的请求也可以匿名访问,而其他路径的请求都需要进行身份验证。
如果以上步骤都已经确认无误,那么可以尝试重新编译运行程序,看看是否能够生效。如果还有问题,可以提供更多的具体信息,例如错误日志等,以便进行排查。
阅读全文