参考文章1:https://segmentfault.com/q/1010000015825479
这两天我也被这个搞蒙了,总结了一下确实是版本问题,spring5(springboot2.x)只支持spring-session-core了。
最高版本的spring-session:1.3.5已经不再更新,而且支持到spring-session-data-redis:1.8。
官方文档上写了,spring-session-data-redis2.x后只能搭配spring-session-core2.x,关键我现在在写的项目是前后端分离的,老版本的spring-session能实现session一致,用新的spring-session-core就会出现session不一致的问题,最后没办法,只能舍弃spring-session框架,改用原生session机制。
后面在想办法优化成直连redis实现伪session或者token加密传递userid这种了
参考文章2:
https://github.com/spring-projects/spring-session/issues/1346
参考文章3:
https://github.com/spring-projects/spring-boot/issues/12634
参考文章4:
maven仓库版本问题
https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-redis
---------------------------------
最终解决:
代码层里面修改,
ExpiringSession session = sessionRepository.getSession(sessionId)
修改为
ExpiringSession session = sessionRepository.findById(sessionId);
spring session 1.3.0的版本升级到了 spring session 2.1.6的版本