Spring Security 使用 JDBC Sessions 在多个 Web 应用程序之间共享相同的会话

问题描述

我目前在多个应用程序中使用 JDBC 会话,并配置了 Spring 安全性。我需要的是同一用户的所有会话在所有应用程序中使用相同的会话。

例如,user1 将他的帐户登录到 applicationA,这在数据库中正确创建了一个会话。之后,同一个用户 1 从不同的浏览器登录到应用程序 B,我需要让该用户在两个应用程序之间共享其会话,以便从应用程序 A 中,用户可以将某些内容保存到其会话中,并使其可从应用程序 B 访问。>

我知道,如果我在 applicationB 中手动更改浏览器中的 SessionId cookie,我可以实现这一点,但我需要的是 spring 在登录后自行执行此操作。

在这里发现了一个类似的问题:How to get same session with Spring Security and Spring Session From multiple server

但答案不正确。

其他信息 JDBC:甲骨文 配置:全部在Java中

解决方法

似乎可以通过使用 OAuth2 并将其用户数据保存在授权服务器中来解决。这样两个应用就可以访问相同的用户数据。

Spring Session 旨在启用会话集群,您可以让同一应用的多个实例共享外部会话存储。