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 相关文章推荐
IE JS编程需注意的内存释放问题
Jun 23 Javascript
javascript学习笔记(七) js函数介绍
Jun 19 Javascript
javascript+xml实现简单图片轮换(只支持IE)
Dec 23 Javascript
js显示时间 js显示最后修改时间
Jan 02 Javascript
Javascript计算两个marker之间的距离(Google Map V3)
Apr 26 Javascript
jQuery+AJAX实现网页无刷新上传
Feb 22 Javascript
javascript瀑布流式图片懒加载实例
Jun 28 Javascript
关于JS Lodop打印插件打印Bootstrap样式错乱问题的解决方案
Dec 23 Javascript
详解vue2路由vue-router配置(懒加载)
Apr 08 Javascript
ionic选择多张图片上传的示例代码
Oct 10 Javascript
Vue中的组件及路由使用实例代码详解
May 22 Javascript
使用Vue-cli3.0创建的项目 如何发布npm包
Oct 10 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 CKEditor 上传图片实现代码
2009/11/06 PHP
php文章内容分页并生成相应的htm静态页面代码
2010/06/07 PHP
PHP的substr_replace将指定两位置之间的字符替换为*号
2011/05/04 PHP
PHP中extract()函数的妙用分析
2012/07/11 PHP
php实现获取文件mime类型的方法
2015/02/11 PHP
Laravel ORM 数据model操作教程
2019/10/21 PHP
laravel实现图片上传预览,及编辑时可更换图片,并实时变化的例子
2019/11/14 PHP
jQuery操作 input type=checkbox的实现代码
2012/06/14 Javascript
使用node.js 制作网站前台后台
2014/11/13 Javascript
jQuery Timelinr实现垂直水平时间轴插件(附源码下载)
2016/02/16 Javascript
一览画面点击复选框后获取多个id值的方法
2016/05/30 Javascript
Javascript字符串常用方法详解
2016/07/21 Javascript
通过原生JS实现为元素添加事件的方法
2016/11/23 Javascript
详解jQuery中基本的动画方法
2016/12/14 Javascript
jQuery实现复制到粘贴板功能
2017/02/11 Javascript
jQuery实现jQuery-form.js实现异步上传文件
2017/04/28 jQuery
利用types增强vscode中js代码提示功能详解
2017/07/07 Javascript
vue.js实现的经典计算器/科学计算器功能示例
2018/07/11 Javascript
Vue使用watch监听一个对象中的属性的实现方法
2019/05/10 Javascript
Vue防止白屏添加首屏动画的实例
2019/10/31 Javascript
es6中Promise 对象基本功能与用法实例分析
2020/02/23 Javascript
JavaScript实现随机点名程序
2020/03/25 Javascript
SpringBoot+Vue开发之Login校验规则、实现登录和重置事件
2020/10/19 Javascript
python基础教程项目二之画幅好画
2018/04/02 Python
python 自定义异常和异常捕捉的方法
2018/10/18 Python
python 使用paramiko模块进行封装,远程操作linux主机的示例代码
2020/12/03 Python
python实现学生通讯录管理系统
2021/02/25 Python
python包的导入方式总结
2021/03/02 Python
CSS3绘制不规则图形的一些方法示例
2015/11/07 HTML / CSS
canvas学习笔记之绘制简单路径
2019/01/28 HTML / CSS
DJI大疆无人机官方商城:全球领先的无人飞行器研发和生产商
2016/12/21 全球购物
中学生班主任评语
2014/01/30 职场文书
自我鉴定 电子商务专业
2014/01/30 职场文书
毕业论文致谢词
2015/05/14 职场文书
利用html+css实现菜单栏缓慢下拉效果的示例代码
2021/03/30 HTML / CSS
苹果的回收机器人可以通过拆解iPhone获取大量的金和铜并外公布了环境保护最新进展
2022/04/21 数码科技