在 spring 会话中配置 Cookie 域

Configure Cookie Domain in spring session

所以我已经在开发本地主机域上使用 spring 会话和 redis 成功实施了 SSO。 但是当我使用两个子域部署到服务器时。

login.example.com

apps.example.com

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

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

但运气不好。

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

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

同时,解决方法是根据 CookieHttpSessionStrategy.

使用您自己的 MultiHttpSessionStrategy 实现

终于在应用层设置域成功了。

你说的对,希望以后能实现设置域的功能。

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

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

然后将bean注册为HttpSessionStrategy。