spring-session一次问题排查这里写自定义目录标题
起源
近期做产品改造,把旧项目的SpringMVC结构重构成SpringBoot,并做前后端分离。
前端人手不够,界面复用SpringMVC的界面,请求到SpringBoot的接口。
这里涉及到session共享,把SpringMVC的session共享到SpringBoot来。
后面的过程中,springBoot项目读取当前用户信息时,拿不到用户信息。发现session没有共享。
排查
首先看SpringMVC端传过来的session

查询redis缓存,是能够查询出来的。能够排除前端正常传session,session也正常保存。
debug spring-session
在spring-session的filter中,尝试去拿session

进入到getRequestedSession中
首先去读请求中的sessionId

从cookie中获取sessionId

这里能够拿到前端传过来的sessionId

然后spring-session会对sessionId做Base64编码。问题就在这<color=‘red’>

我的sessionId无法base64解码,直接抛出异常。
后续没有读取到正确的sessionId就直接错了。
spring-session可以配置是否使用,base64对sessionId做处理
因为登陆侧那边沿用的旧代码没有使用base64,这里我保持统一,加上DefaultCookieSerializer的Bean做好Base64Encoding设为false
本文探讨了将Spring MVC项目中的session迁移到Spring Boot时遇到的问题,重点在于前端发送的sessionId在通过Base64编码后无法解码。作者通过debug session filter,定位到了编码差异并提供了相应的配置解决方案。

被折叠的 条评论
为什么被折叠?



