1、原因
spring session 1.x与2.x 同时在项目中使用时,导致session不一致,主要是因为1.x中默认的cookieSerializer(DefaultCookieSerializer )的 useBase64Encoding=false,而 spring-session 2.x 中默认的cookieSerializer(DefaultCookieSerializer ) 的 useBase64Encoding=true
2、解决方法
因此解决只需保证两边 useBase64Encoding 一致就行。目前,我们采用直接修改2.x useBase64Encoding 为主。
在使用spring session 2.x 工程添加以下配置。
@Bean
public CookieSerializer cookieSerializer() {
DefaultCookieSerializer cookieSerializer = new DefaultCookieSerializer();
cookieSerializer.setUseBase64Encoding(false);
//cookieSerializer.setCookieMaxAge(-1);
return cookieSerializer;
}
3、后续问题、以及解决方法
1.x项目session id 每次刷新页面都会改变
按照上述解决办法将2.x项目配置完成后,并重启。
1.x项目和redis未重启。
1.x项目和2.x项目使用统一浏览器进行访问,且浏览器未重启。
在上述情况下,发生问题:1.x项中的 session id 每次刷新页面都会改变。
重启浏览器后,再次操作,则正常。