关于使用 shiro-redis-spring-boot-starter,导致shiro.sessionManager.sessionIdUrlRewritingEnabled 失效, url首次访问,自动生成的JSESSIONID=xxx那些事
【笔记2】SpringBoot快速整合ShiroRedis与Thymeleaf(完整版)_深渊码头-CSDN博客 文章中,修复了已知问题
答:因为在使用shiro-redis-spring-boot-starter的时候, shiro-redis-spring-boot-starter重写了shiro-spring-boot-web-starter的SessionManager和SecurityManager,这就导致了shiro提供的默认配置都失效
解决方案:
在shiro配置,重新配置 SessionManager和SecurityManager
@Autowired
RedisSessionDAO redisSessionDAO;
@Autowired
RedisCacheManager redisCacheManager;
@Bean
public SessionManager sessionManager() {
DefaultWebSessionManager sessionManager = new DefaultWebSessionManager();
//禁用shiro会话重写功能
sessionManager.setSessionIdUrlRewritingEnabled(false);//关键代码
sessionManager.setSessionDAO(redisSessionDAO);
return sessionManager;
}
@Bean
public SessionsSecurityManager securityManager(SampleRealm realms, SessionManager sessionManager) {
DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager(realms);
securityManager.setSessionManager(sessionManager);
securityManager.setCacheManager(redisCacheManager);
return securityManager;
}
直接重回到半个spring时代