当前想在一个登录页面A中内嵌另外一个登录页面B,在点击A中的登录按钮后,如果登录成功,则自动点击B中的登录按钮登录B系统。在tomcat中没有出现问题,运行的很好,但是在weblogic中出现,登录A成功后,也登录B系统,但是在跳转到A系统的首页面后,自动退出A系统。
分析后发现,登录A后,浏览器中cookie的JSESSIONID被复制,但继续登录B成功后,JSESSIONID又被重新赋值,冲掉了之前A系统中的值,然后跳转到A系统的首页时,服务器端需要验证时候有sessiond的ID为当前JSESSIONID的值,此时由于已经被冲掉,所以不能找到,服务器认为用户没有登录,所以返回登录页面。
这里主要涉及两个问题:
1.cookie和session的关系,浏览器工作机制。
2.weblogic中设置CookieName的问题,主要用来防止默认的JSESSIONID被冲掉,可以为其重新名一个名。在weblogic.xml(和web.xml同级)中添加配置文件为
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE weblogic-web-app PUBLIC "-//BEA Systems, Inc.//DTD Web Application 8.1//EN" "http://www.bea.com/servers/wls810/dtd/weblogic810-web-jar.dtd" >
<weblogic-web-app>
<container-descriptor>
<filter-dispatched-requests-enabled>false</filter-dispatched-requests-enabled>
</container-descriptor>
<session-descriptor>
<session-param>
<param-name>CookieName</param-name>
<param-value>ws</param-value>
</session-param>
</session-descriptor>
</weblogic-web-app>