项目中使用的shiro是1.6.0,由于存在权限绕过漏洞,现需要将shiro升级至1.10.0以上,来解决漏洞,直接升级pom文件中shiro-core版本后,出现无法登陆,一直报验证码错误的情况。
由于ShiroFilter在两个版本间的代码区别,所以在ShiroConfig文件中,还需要做一些修改调整,需要将ShiroFilterConfiguration配置上,直接贴代码。
在ShiroConfig.java文件中,增加如下代码
@Bean
public ShiroFilterConfiguration shiroFilterConfiguration() {
ShiroFilterConfiguration configuration = new ShiroFilterConfiguration();
configuration.setFilterOncePerRequest(true);//配置为true
return configuration;
}
并对shiroFilterFactoryBean设置ShiroFilterConfiguration,同样是在ShiroConfig.java文件
@Bean
public ShiroFilterFactoryBean shiroFilterFactoryBean(SecurityManager securityManager){
ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean();
//...省略其他相关代码
// 设置为上面的shiroFilterConfiguration
shiroFilterFactoryBean.setShiroFilterConfiguration(shiroFilterConfiguration());
//...省略其他相关代码
return shiroFilterFactoryBean;
}
设置完成后,项目正常启动,正常登录,不再报验证码错误