日期:2014-05-19  浏览次数:20772 次

同一个IP不同端口,两个应用的session会冲突,如何解决
应用A部署在localhost:7001中
应用B部署在localhost:7003中

在A的一个页面iframe中访问B的页面,再点A菜单上的一个链接,结果跳到A登陆页面。

原因是A的session被覆盖了,因为访问B时,weblogic(或ie?)认为是同一个域,接收了B的set-cookie指令,把对应的cookie内容覆盖了,其中包括jsessionid,造成A的session丢失。

如果IP不同,则不会发生这个问题,因为weblogic(或ie?)会为不同的IP分配不同的cookie空间,而不区分端口号。

IP是不能换了,有什么办法吗?
------解决方案--------------------
莫非用的是CAS。。。。。
------解决方案--------------------
我觉得登录要专门放到一个服务器的,因为要做集中授权,还是分开吧,别在一个容器里
------解决方案--------------------
引用:
我觉得登录要专门放到一个服务器的,因为要做集中授权,还是分开吧,别在一个容器里

都已经做好定下来了,改不了
------解决方案--------------------
典型的串门。。
------解决方案--------------------
通过设置weblogic.xml中cookie-name为不同名称解决
------解决方案--------------------
设置各个应用使用不同的cookie-name,或者将JSESSIONID的path路径设置为不同

1)weblogic的设置(设置不同的cookie-name):

请在WEB-INF\Weblogic.xml添加如下代码

<session-descriptor>       

        <cookie-name>JSESSIONID1</cookie-name>   

</session-descriptor>