0

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

login.example.com

apps.example.com

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

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

但没有运气。

4

2 回答 2

0

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

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

同时,一种解决方法是使用您自己的MultiHttpSessionStrategy基于CookieHttpSessionStrategy.

于 2015-09-19T23:48:02.380 回答
0

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

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

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

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

然后将bean注册为HttpSessionStrategy。

于 2015-09-21T02:02:11.487 回答