描述:
客户项目通过spring-session-redis实现分布式会话共享,部署至 TongWeb7 企业版后,偶发会话失效,用户被强制跳转回登录页面
排查:
抓包与日志观测发现:异常请求(如错误页、异常跳转请求)会优先使用 TongWeb 容器原生StandardSession,携带容器默认JSESSIONID.
解决:
项目以 WAR 包外置部署至 TongWeb 时,除基础SpringBootServletInitializer容器启动适配类外,需新增会话初始化类接管容器原生 Session,如下图所示:
import org.springframework.session.web.context.AbstractHttpSessionApplicationInitializer;
// 无需任何方法实现,父类自动执行注册逻辑
public class SessionInitializer extends AbstractHttpSessionApplicationInitializer {}
说明:该类会在容器启动阶段优先注册 Spring 会话过滤器,强制 TongWeb 全部请求走 Redis 分布式会话,彻底接管容器原生HttpSession,规避两套会话并存冲突