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