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 相关文章推荐
Firefox中autocomplete="off" 设置不起作用Bug的解决方法
Mar 25 Javascript
将中国标准时间转换成标准格式的代码
Mar 20 Javascript
js实现按一下删除键删除整个单词附demo
Sep 05 Javascript
原生js三级联动的简单实现代码
Jun 07 Javascript
js实现的光标位置工具函数示例
Oct 03 Javascript
完美解决jQuery的hover事件在IE中不停闪动的问题
Feb 10 Javascript
JavaScript中document.referrer的用法详解
Jul 04 Javascript
node中使用es5/6以及支持性与性能对比
Aug 11 Javascript
用p5.js制作烟花特效的示例代码
Mar 21 Javascript
解决vue路由后界面没有变化,但是链接有的问题
Sep 01 Javascript
微信小程序 授权登录详解(附完整源码)
Aug 23 Javascript
js判断复选框是否选中的方法示例【基于jQuery】
Oct 10 jQuery
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
复杂检索数据并分页显示的处理方法
2006/10/09 PHP
php安全配置 如何配置使其更安全
2011/12/16 PHP
Symfony2函数用法实例分析
2016/03/18 PHP
PHP7 弃用功能
2021/03/09 PHP
初学JavaScript第二章
2008/09/30 Javascript
js实现新浪微博首页效果
2015/10/16 Javascript
Bootstrap每天必学之表单
2015/11/23 Javascript
Bootstrap每天必学之弹出框(Popover)插件
2016/04/25 Javascript
详解AngularJS中$filter过滤器使用(自定义过滤器)
2017/02/04 Javascript
Ajax基础知识详解
2017/02/17 Javascript
TypeScript基础入门教程之三重斜线指令详解
2018/10/22 Javascript
微信小程序保存多张图片的实现方法
2019/03/05 Javascript
微信小程序实现购物车代码实例详解
2019/08/29 Javascript
JavaScript数组排序小程序实现解析
2020/01/13 Javascript
Python设计模式中单例模式的实现及在Tornado中的应用
2016/03/02 Python
python 字典(dict)按键和值排序
2016/06/28 Python
Python使用Windows API创建窗口示例【基于win32gui模块】
2018/05/09 Python
python模块smtplib实现纯文本邮件发送功能
2018/05/22 Python
使用python将时间转换为指定的格式方法
2018/11/12 Python
python使用pip安装SciPy、SymPy、matplotlib教程
2019/11/20 Python
TensorFlow:将ckpt文件固化成pb文件教程
2020/02/11 Python
python 实现人和电脑猜拳的示例代码
2020/03/02 Python
python在linux环境下安装skimage的示例代码
2020/10/14 Python
欧迪办公美国官网:Office Depot
2016/08/22 全球购物
Mavi牛仔裤美国官网:土耳其著名牛仔品牌
2016/09/24 全球购物
KIKO MILANO西班牙官网:意大利领先的化妆品和护肤品品牌
2019/05/03 全球购物
采购求职信
2014/03/17 职场文书
百货商场楼层班组长竞聘书
2014/03/31 职场文书
高二学生评语大全
2014/04/25 职场文书
2014最新毕业证代领委托书
2014/09/26 职场文书
群众路线教育实践活动学习笔记内容
2014/11/06 职场文书
2015年行政人事工作总结
2015/05/21 职场文书
Python pandas读取CSV文件的注意事项(适合新手)
2021/06/20 Python
《极主夫道》真人电影正式预告 定档6月3日上映
2022/04/05 日漫
Spring JPA 增加字段执行异常问题及解决
2022/06/10 Java/Android
Java获取字符串编码格式实现思路
2022/09/23 Java/Android