最近在做项目是遇到一个比较恶心的问题: 项目A要iframe嵌套项目B的页面, 使用了单点登录的方式 嵌套项目B页面后, 再访问A项目菜单 居然session失效了, 这个问题苦恼了好久,最终在网上找到了解决方法,如下:(注:我这边项目A和项目B是同ip 不同端口)
首先要搞懂出现这种情况的原因:
首先要明白 客户端用cookie保存了sessionID,当我们请求服务器的时候,会把这个sessionID一起发给服务器,服务器会到内存中搜索对应的sessionID,如果找到了对应的 sessionID,说明我们处于登录状态,有相应的权限;如果没有找到对应的sessionID,这说明:要么是我们把浏览器关掉了(后面会说明为什 么),要么session超时了(没有请求服务器超过20分钟),session被服务器清除了,则服务器会给你分配一个新的sessionID。你得重 新登录并把这个新的sessionID保存在cookie中。
其次IP相同的两个session对应的cookie是一样的,IP相同认为是同一个域,接收了B的set-cookie指令,把对应的cookie内容覆盖了,其中包括jsessionid,造成A的session丢失。 如果IP不同,则不会发生这个问题。。
解决方案如下:
weblogic修改方法

在项目A中通过iframe嵌套项目B时遇到session失效问题,即使使用了单点登录。问题在于同IP下,B项目的set-cookie指令覆盖了A的session。解决方案是在weblogic中为每个应用设置不同的cookie-name,例如在Weblogic.xml中添加<session-descriptor><cookie-name>JSESSIONID1</cookie-name></session-descriptor>。
最低0.47元/天 解锁文章
7858

被折叠的 条评论
为什么被折叠?



