4

我有两个应用程序AB它们在同一台服务器上运行,具有不同的端口。由于 cookie 不是特定于端口的,因此这两个应用程序使用相同的 cookie JSESSIONID。当我登录其中一个时,我会被另一个踢出。

所以我需要修改每个应用程序的 cookie 名称。我怎样才能有一个自定义的 cookie 名称?如果有帮助,我正在使用弹簧安全性。


问题已解决
正如迈克尔指出的那样,我根本不需要更改JSESSIONID名称。两个应用程序使用相同URL/Path的,这就是第二个 cookie 替换第一个的原因。

4

1 回答 1

3

您不应更改 JSESSIONID cookie 的名称。cookie 不是特定于端口的,而是特定于应用程序路径的。默认行为是根据应用程序路径设置 JSESSIONID cookie,并且来自一个应用程序的 cookie 不应干扰第二个应用程序的 cookie。我将 spring-security-samples-contacts-3.1.0.RELEASE.war 复制两次到同一服务器的 webapp 文件夹:test.war 和 contacts.war。我已经在同一个浏览器中打开了这两个应用程序。我使用 Fiddler,我看到以下内容:当我登录到联系人应用程序时,Tomcat 将 cookie 设置为路径contacts

Set-Cookie: JSESSIONID=408F79D16A8665C73F5C30D66B102DA6; Path=/contacts/; HttpOnly

与测试应用程序类似:

Set-Cookie: JSESSIONID=ECAE9734E9A277F1E96D678BB67E558B; Path=/test/; HttpOnly

然后,我可以毫无问题地同时处理两个应用程序

于 2013-05-25T10:18:12.747 回答