cookie丢失问题(认证失效) Authentication (用户验证信息)也会丢失


Posted in Javascript onJune 04, 2009

不知大家是否遇到过如此的尴尬:

 当你的页面认证采用基于Cookie的方式,例如form,windows集成认证时,如下操作后有时认证失效,Authentication (用户验证信息)丢失,需要再次登录
 系统正常登录后:

 第一个页面(PageA.htm):window.showModalDialog()后,弹出第二个页面(PageB.htm)

 第二个页面(PageB.htm):window.open()后,弹出的窗口(PageC.htm)有时会跳转到登录页面

 这应该是由于不同的页面存在于不同的进程,导致了身份信息不同步,发生了认证失效,然而这是有一定概率发生的,经过MS顾问的帮忙,终于找到了方法:
 概括讲就是,在showModalDialog()时,将window作为对象参数传入PageB.htm,在PageB中,用这个参数去open(),这样问题就解决了
 具体如下:
-----------PageA.htm--------------
...
var obj = new Object();
obj.myTestWindowA = window;//将这个window存入对象参数中
window.showModalDialog("PageB.htm",obj,"");
...
----------------------------------

-----------PageB.htm--------------
...
var obj = window.dialogArguments;//获取上个页面的参数
obj.myTestWindowA.open("PageC.htm");//用上个页面传过来的参数打开下一个页面
...
----------------------------------
 经测试,没有再出现身份丢失现象,大功告成了!
 细心的朋友会发现,这样的操作会导致,在PageC.htm中由于opener不是PageB.htm而是PageA.htm了,所以无法用window.opener与PageB.htm进行通信,而open()又无法传递对象参数,慌了!
不过幸好在javascript中,对象是一颗大树,你可以在它的枝杈上挂任何东西,所以,我们为了PageC.htm能与PageB.htm通信,对PageB.htm改造 如下:
-----------PageB.htm--------------
...
var obj = window.dialogArguments;//获取上个页面的参数
var obj.myTestWindowA.myTestWindowB = new Object();
obj.myTestWindowA.myTestWindowB = window;//将PageB的window挂在PageA的window枝干下
obj.myTestWindowA.open("PageC.htm");//用上个页面传过来的参数打开下一个页面
...
----------------------------------
 如此,便可在PageC中,通过window.opener.myTestWindowB来与PageB页面的对象通信,例如 window.opener.myTestWindowB.document.getElementById("TextBox1").value="OK"

注:
1.这也许只是一种情况,可能先open再showModalDialog也有可能导致身份信息丢失,但大家只要传那个没有问题的window到下一页面,问题就能迎刃而解。

(丢失情况请参见http://www.ourac.net/read.php?tid=45123&fpage=2
2.也有可能在Session时发生,请参见http://support.microsoft.com/default.aspx?scid=kb;EN-US;196383

Javascript 相关文章推荐
如何确保JavaScript的执行顺序 之实战篇
Mar 03 Javascript
Dom 学习总结以及实例的使用介绍
Apr 24 Javascript
javascript中String对象的slice()方法分析
Dec 20 Javascript
解决angular的post请求后SpringMVC后台接收不到参数值问题的方法
Dec 10 Javascript
Bootstrap表格和栅格分页实例详解
May 20 Javascript
如何理解jQuery中的ajaxSubmit方法
Mar 13 Javascript
微信小程序实现给嵌套template模板传递数据的方式总结
Dec 18 Javascript
vue自定义指令directive实例详解
Jan 17 Javascript
使用Vue开发一个实时性时间转换指令
Jan 17 Javascript
Vue组件中的data必须是一个function的原因浅析
Sep 03 Javascript
JavaScript实现图片轮播特效
Oct 23 Javascript
JS实现九宫格拼图游戏
Jun 28 Javascript
javascript 常用方法总结
Jun 03 #Javascript
Javascript 获取字符串字节数的多种方法
Jun 02 #Javascript
javascript HTMLEncode HTMLDecode的完整实例(兼容ie和火狐)
Jun 02 #Javascript
Javascript String对象扩展HTML编码和解码的方法
Jun 02 #Javascript
几个常用的JavaScript字符串处理函数 - split()、join()、substring()和indexOf()
Jun 02 #Javascript
慎用 somefunction.prototype 分析
Jun 02 #Javascript
网页和浏览器兼容性问题汇总(draft1)
Jun 01 #Javascript
You might like
PHP使用者状态管理功能的应用
2006/10/09 PHP
php生成静态页面的简单示例
2014/04/17 PHP
php计算整个目录大小的方法
2015/06/01 PHP
php微信公众号开发之翻页查询
2018/10/20 PHP
fckeditor 获取文本框值的实现代码
2009/02/09 Javascript
获取焦点时,利用js定时器设定时间执行动作
2010/04/02 Javascript
封装html的select标签的js操作实例
2013/07/02 Javascript
JS 屏蔽按键效果与改变按键效果的示例代码
2013/12/24 Javascript
Javascript基础教程之switch语句
2015/01/18 Javascript
jQuery验证插件validation使用指南
2015/04/21 Javascript
javascript实现在网页任意处点左键弹出隐藏菜单的方法
2015/05/13 Javascript
基于Bootstrap+jQuery.validate实现表单验证
2016/05/30 Javascript
xmlplus组件设计系列之列表(4)
2017/04/26 Javascript
Vue项目webpack打包部署到服务器的实例详解
2017/07/17 Javascript
es6 字符串String的扩展(实例讲解)
2017/08/03 Javascript
javascript+html5+css3自定义弹出窗口效果
2017/10/26 Javascript
浅谈vue中改elementUI默认样式引发的static与assets的区别
2018/02/03 Javascript
Vue表单及表单绑定方法
2018/09/04 Javascript
Node.js使用MongoDB的ObjectId作为查询条件的方法
2019/09/10 Javascript
举例介绍Python中的25个隐藏特性
2015/03/30 Python
Python复制Word内容并使用格式设字体与大小实例代码
2018/01/22 Python
python pandas 对时间序列文件处理的实例
2018/06/22 Python
Python实现iOS自动化打包详解步骤
2018/10/03 Python
Python 共享变量加锁、释放详解
2019/08/28 Python
Python合并2个字典成1个新字典的方法(9种)
2019/12/19 Python
python实现用户名密码校验
2020/03/18 Python
基于Python采集爬取微信公众号历史数据
2020/11/27 Python
Bally巴利中国官网:经典瑞士鞋履、手袋及配饰奢侈品牌
2018/10/09 全球购物
优秀员工自荐信范文
2013/10/05 职场文书
男方父母证婚词
2014/01/12 职场文书
公司行政专员岗位职责
2014/08/24 职场文书
领导干部“四风”问题批评与自我批评材料
2014/09/24 职场文书
工作表现证明
2015/06/15 职场文书
看看如何用Python绘制小米新版天价logo
2021/04/20 Python
MySQL中IF()、IFNULL()、NULLIF()、ISNULL()函数的使用详解
2021/06/26 MySQL
Python 避免字典和元组的多重嵌套问题
2022/07/15 Python