我们在同一个域的后面有两个项目(在它们前面的zuul代理),都使用spring session 项目, session 保存在redis中。
这两个 session 应该是不同的,但似乎它们正在覆盖名为“SESSION”的cookie中的其他ID。如何更改名字?有没有简单的方法可以通过配置来做到这一点?
最佳答案
好的,我没有在配置中找到任何属性来更改它。我深入研究了Spring session 的源代码,最后做了:
@Bean
public <S extends ExpiringSession> SessionRepositoryFilter<? extends ExpiringSession> springSessionRepositoryFilter(SessionRepository<S> sessionRepository, ServletContext servletContext) {
SessionRepositoryFilter<S> sessionRepositoryFilter = new SessionRepositoryFilter<S>(sessionRepository);
sessionRepositoryFilter.setServletContext(servletContext);
CookieHttpSessionStrategy httpSessionStrategy = new CookieHttpSessionStrategy();
httpSessionStrategy.setCookieName("MY_SESSION_NAME");
sessionRepositoryFilter.setHttpSessionStrategy(httpSessionStrategy);
return sessionRepositoryFilter;
}
“SESSION”名称是CookieHttpSessionStrategy的源中的默认设置。