2015-10-13 2 views
0

У нас есть два проекта за одним доменом (zuul proxy перед ними), оба используют проект Spring Session с сессиями, хранящимися в redis.Как изменить имя файла cookie Spring (redis)?

Эти две сессии должны быть разными, но, похоже, они переписывают друг друга в cookie с именем «СЕССИЯ». Как изменить это имя? Есть ли простой способ сделать это через конфигурацию?

ответ

2

ok, я не нашел никакого свойства в конфигурации, чтобы изменить это. Я закопать немного в весенне-сессии исходного кода, и, наконец, сделать:

@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.

0

Обнаружено сообщение в блоге об этом, spring-session学习
В этом сообщении объясняется, как изменить имя идентификатора сеанса с помощью Spring XML.

как следующее:

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

И я тестировал его, и он работал.