我有两个不同的应用程序,比如说A
和 . 两者都使用具有相同配置的 Spring Security。这是我的情况:
我登录我的A
应用程序。一切正常。但是当我在同一个浏览器的另一个选项卡中登录我的B
应用程序(它具有相同的 IP 但不同的端口)时,我看到这些行(如下)并且我被从A
应用程序中丢弃,这意味着我不再在其中进行身份验证。
DEBUG 2013-05-20 13:42:43,969 [http-8080-2] org.springframework.security.web.FilterChainProxy$VirtualFilterChain : /webapp/backoffice/index.jsp 在附加过滤器链中的第 12 个位置;触发过滤器:'SecurityContextPersistenceFilter'
调试 2013-05-20 13:42:43,969 [http-8080-2] org.springframework.security.web.context.HttpSessionSecurityContextRepository:当前不存在 HttpSession
调试 2013-05-20 13:42:43,969 [http-8080-2] org.springframework.security.web.context.HttpSessionSecurityContextRepository:HttpSession 中没有可用的 SecurityContext:null。将创建一个新的。
- 我
HttpSessionSecurityContextRepository
用作SecurityContextRepository。 - 出于安全目的,我启用了SessionMigration 。
- 我正在使用ConcurrentSessionFilter,以防止有人通过两个或更多设备登录。
但我不明白为什么登录我的B
应用程序,从应用程序中删除 HttpSession A
?(或者可能正在发生其他一些事情)
我想知道这些应用程序是否在浏览器中共享某些东西。
当我被问及他们的 IP/PORT 时,您应该知道他们的 IP 是相同的(都是 localhost),但它们有不同的端口。
A)
本地主机:8080/dtts/后台B)
本地主机:8081/dtts/后台
解决
了问题是每个
URL/Path
人都会有一个独特的JSESSIONID
. 我的两个应用程序都使用URL:localhost
和Path:dtts
. 这就是为什么第二个JSESSIONID
取代第一个。