实际项目中多个工程之间需要用到session共享,spring提供注解方式@EnableRedisHttpSession,很是方便,但最近一个新项目用到的spring session 版本是2.x居然跟之前的1.x版本不兼容。
网上搜到一种解决办法,说是2.x版本默认对session内容进行64编码,只要把设置改下就好,配置类中添加@Bean注解方法,把默认64编码去掉,代码如下
@Bean public CookieSerializer devCookieSerializer(){ DefaultCookieSerializer serializer = new DefaultCookieSerializer(); serializer.setUseBase64Encoding(false); return serializer; }
我设置了这个属性,但并没有解决我的实际问题,在跟代码之后发现,1.x版本会在Redis把session保存key为“spring:session:+你设置的命名空间“这种格式,而2.x版本的并不会默认添加spring:session:前缀,所以高版本的项目除了要做上面的配置外,还要在低版本项目中命名空间字符串前加个“spring:session:”前缀,这样才能兼容。
至此,在不改低版本项目的前提下,高版本项目和低版本项目也能做到Session共享。