在Spring会话中配置Cookie域

时间:2015-09-18 05:13:35

标签: spring tomcat spring-session

所以我已经成功使用spring session和redis在开发localhost域上实现SSO。 但是当我使用两个子域部署到服务器时。

login.example.com

apps.example.com

他们总是在每个子域上创建新的会话ID。 我已经尝试在tomcat配置中使用Context进行配置。

<Context sessionCookieDomain=".example.com" sessionCookiePath="/">

但没有运气。

2 个答案:

答案 0 :(得分:0)

Spring会话在应用程序级别上移动会话管理,因此尝试配置容器(在您的情况下为tomcat)无效也就不足为奇了。目前在spring-session代码中有一个 TODO 以允许设置域,但是没有实现。

也许最好打开一个问题,允许在https://github.com/spring-projects/spring-session/issues/112上设置域名或评论/投票。

同时,解决方法是根据MultiHttpSessionStrategy自行实施CookieHttpSessionStrategy

答案 1 :(得分:0)

最后,我成功地在应用程序级别上设置了域名。

你是对的,我希望将来他们能够实现设置域名的功能。

现在我为自己的实施创建CustomCookieHttpSessionStrategy。

private Cookie createSessionCookie(HttpServletRequest request,
        Map<String, String> sessionIds) {
...
      sessionCookie.setDomain(".example.com");
      // TODO set domain?
...
}

然后将bean注册为HttpSessionStrategy。