【发布时间】:2015-12-22 04:03:13
【问题描述】:
我们最近意识到我们的会话 cookie 正在写入我们网站的完全限定域名 www.myapp.com,例如:
MYAPPCOOKIE: 79D5DB83..., domain: www.myapp.com
我们希望将其切换为可以跨子域共享的 cookie,因此myapp.com 的任何服务器也可以使用会话 cookie。例如,我们希望我们的 cookie 像这样存储:
MYAPPCOOKIE: 79D5DB83..., domain: .myapp.com
我们尝试更改会话 cookie 以使用该域,如下所示:
Cookie sessionCookie = sessionManager.getSessionIdCookie();
sessionCookie.setDomain(".myapp.com");
这在大多数情况下都可以正常工作。
我们发现一些用户在某些情况下部署此新代码后无法登录。当用户出现问题时:
- 已在当前浏览器会话中登录我们的网站,但当前未登录。
- 他们尝试再次登录
他们的浏览器中似乎有 2 个会话 cookie:
-
来自他们之前会话的陈旧 cookie,带有完全限定的域名
MYAPPCOOKIE: 79D5DB83..., domain: www.myapp.com -
他们刚刚登录的会话的新会话 cookie,带有新的域设置
MYAPPCOOKIE: 79D5DB83..., domain: .myapp.com
管理这个旧 cookie 的最佳方法是什么?如果用户没有会话,我们已经尝试添加一些代码来删除旧的 cookie,但是进入我们的应用程序的某些路径似乎不起作用。
如果可行,我们愿意重命名 cookie,并且正在寻找其他人可能提出的任何建议。谢谢!
【问题讨论】:
标签: java session-cookies shiro