2015-10-13 56 views
0

我们有两个项目在同一个域后面(在它们前面的zuul代理),两个都使用spring会话项目,会话保存在redis中。如何更改春季会话(redis)cookie名称?

这两个会话应该是不同的,但似乎他们覆盖了cookie中名为'SESSION'的每个其他ID。如何更改该名称?有没有简单的方法通过配置来实现?

回答

2

好的,我没有在配置中找到任何属性来改变它。我挖在春季会议期间的源代码位,最后做:

@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; 
} 

“会话”的名字是默认的CookieHttpSessionStrategy源设置。

0

我发现了一篇关于此的博文,spring-session学习
本文解释了如何使用Spring XML更改会话ID名称。

类似以下内容:

<bean class="org.springframework.session.web.http.DefaultCookieSerializer"> 
     <property name="cookieName" value="SYSTEM_SESSION_ID" /> 
</bean> 

而且,实际上我测试了它和它的工作。