说明:
在服务器上部署了两个服务,其中,除了端口不同,其他都一样;
现象:其中一个服务退出,另一个也会退出;
原因:浏览器存储cookie的名称相同,所以会清理掉;
解决方案:在shiro配置文件中,更新不同的cookiename与remember的名称
@Value("${session.cookie.name}")
private String sessionCookieName;
@Value("${session.cookie.remember}")
private String remember;
@Bean(name = "simpleIdCookie")
public SimpleCookie getSimpleCookie() {
SimpleCookie simpleCookie = new SimpleCookie();
simpleCookie.setName(null==sessionCookieName?"SHIROSESSIONID":sessionCookieName);
// simpleCookie.setName("SHIROSESSIONID");
return simpleCookie;
}
@Bean
public SimpleCookie rememberMeCookie() {
SimpleCookie simpleCookie = new SimpleCookie(null==remember?"rememberMe":remember);
// SimpleCookie simpleCookie = new SimpleCookie("rememberMe");
simpleCookie.setMaxAge(86400);//存活 一天
return simpleCookie;
}
还看到别的相似的,记录一下:
spring boot 多模块,多端口session冲突问题
解决办法:在其中一个项目的application.properties配置文件中加入如下配置:server.servlet.session.cookie.name=sessionid_1
问题原因:这本身和springboot2.0没有任何关系,是因为在同一个地址上发布了两个使用同样cookie name的tomcat导致的,springboot内置的tomcat会生成一个名称为JSESSIONID的cookie name,如果不做修改,两个web服务的cookie name是相同的所以会彼此覆盖,所以需要去修改springboot内置tomcat的cookie name让两个项目的cookie name不同。
需要注意springboot2.0之前的版本是server.session.cookie.name,而2.0之后改为了server.servlet.session.cookie.name,此处为一个坑。
2.0以上版本
server.servlet.session.cookie.name=session_1
2.0以下版本
server.session.cookie.name=session_1
同一地址,不同服务,其中一个退出,另一个也会退出springboot+shiro
原文:https://www.cnblogs.com/notchangeworld/p/13186059.html