我在处理 session 时遇到了不便..
我有这个:
www.mydomain.com
sub1.mydomain.com
sub2.mydomain.com
sub3.mydomain.com
当我登录到“www”时,然后我更改为“sub2”(例如)我 弄清楚它会创建另一个 session :S 这是为什么??
我需要 www、sub1、sub2、sub3 等相同的 session .. 全部在 “我的域名.com”..
我能做什么??是这样的,我必须把戏吗?或者是 有我想要的“合法”解决方案吗??
最佳答案
JSESSIONID cookie 由容器发出,cookie 域和路径始终是 Web 应用程序的域和上下文根。
看起来好像你有多个应用程序,在这种情况下,一个应用程序发出的 JSESSIONID 不会被另一个应用程序识别,因为域或上下文根发生了变化,即使应用程序在同一个容器中.
有多种方法可以解决这个问题:
- 如果您处理的不是高值(value)应用程序,并且可以保证服务器上不会部署“恶意”应用程序,则可以将服务器配置为跨应用程序共享 session 。 Weblogic Server可以配置为执行此操作。
- 使用中央身份验证和 session 管理提供商 - SSO。
- 使用 TLS/SSL - 大多数服务器在通过 SSL 进行通信时不会发出 JSESSIONID cookie,而是使用 SSL 本身来存储状态。你会在这里得到不同的结果。
更新:
Glassfish v3 允许您为 session cookie 设置域。这是通过 session-config element in sun-web.xml 完成的.我不确定这是否适用于 v2 或更低版本的 Glassfish。
关于java - 处理 JSP Session 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1303193/