cookie丟失問題(認(rèn)證失效) Authentication (用戶驗證信息)也會丟失
不知大家是否遇到過如此的尷尬:
當(dāng)你的頁面認(rèn)證采用基于Cookie的方式,例如form,windows集成認(rèn)證時,如下操作后有時認(rèn)證失效,Authentication (用戶驗證信息)丟失,需要再次登錄
系統(tǒng)正常登錄后:
第一個頁面(PageA.htm):window.showModalDialog()后,彈出第二個頁面(PageB.htm)
第二個頁面(PageB.htm):window.open()后,彈出的窗口(PageC.htm)有時會跳轉(zhuǎn)到登錄頁面
這應(yīng)該是由于不同的頁面存在于不同的進(jìn)程,導(dǎo)致了身份信息不同步,發(fā)生了認(rèn)證失效,然而這是有一定概率發(fā)生的,經(jīng)過MS顧問的幫忙,終于找到了方法:
概括講就是,在showModalDialog()時,將window作為對象參數(shù)傳入PageB.htm,在PageB中,用這個參數(shù)去open(),這樣問題就解決了
具體如下:
-----------PageA.htm--------------
...
var obj = new Object();
obj.myTestWindowA = window;//將這個window存入對象參數(shù)中
window.showModalDialog("PageB.htm",obj,"");
...
----------------------------------
-----------PageB.htm--------------
...
var obj = window.dialogArguments;//獲取上個頁面的參數(shù)
obj.myTestWindowA.open("PageC.htm");//用上個頁面?zhèn)鬟^來的參數(shù)打開下一個頁面
...
----------------------------------
經(jīng)測試,沒有再出現(xiàn)身份丟失現(xiàn)象,大功告成了!
細(xì)心的朋友會發(fā)現(xiàn),這樣的操作會導(dǎo)致,在PageC.htm中由于opener不是PageB.htm而是PageA.htm了,所以無法用window.opener與PageB.htm進(jìn)行通信,而open()又無法傳遞對象參數(shù),慌了!
不過幸好在javascript中,對象是一顆大樹,你可以在它的枝杈上掛任何東西,所以,我們?yōu)榱薖ageC.htm能與PageB.htm通信,對PageB.htm改造 如下:
-----------PageB.htm--------------
...
var obj = window.dialogArguments;//獲取上個頁面的參數(shù)
var obj.myTestWindowA.myTestWindowB = new Object();
obj.myTestWindowA.myTestWindowB = window;//將PageB的window掛在PageA的window枝干下
obj.myTestWindowA.open("PageC.htm");//用上個頁面?zhèn)鬟^來的參數(shù)打開下一個頁面
...
----------------------------------
如此,便可在PageC中,通過window.opener.myTestWindowB來與PageB頁面的對象通信,例如 window.opener.myTestWindowB.document.getElementById("TextBox1").value="OK"
注:
1.這也許只是一種情況,可能先open再showModalDialog也有可能導(dǎo)致身份信息丟失,但大家只要傳那個沒有問題的window到下一頁面,問題就能迎刃而解。
(丟失情況請參見http://www.ourac.net/read.php?tid=45123&fpage=2)
2.也有可能在Session時發(fā)生,請參見http://support.microsoft.com/default.aspx?scid=kb;EN-US;196383
相關(guān)文章
JavaScript 實現(xiàn)網(wǎng)頁打印處理
JavaScript 實現(xiàn)網(wǎng)頁打印處理...2007-04-04JavaScript 節(jié)點(diǎn)操作 以及DOMDocument屬性和方法
最近發(fā)現(xiàn)DOMDocument對象很重要,還有XMLHTTP也很重要 注意大小寫一定不能弄錯.2007-12-12關(guān)于JS Lodop打印插件打印Bootstrap樣式錯亂問題的解決方案
關(guān)于Lodop打印是個很牛逼的打印插件,但是打印Bootstrap的樣式的時候就容易錯亂,下面通過本文給大家分享下這方面的問題2016-12-12Bootstrap零基礎(chǔ)學(xué)習(xí)第一課之模板
這篇文章主要為大家詳細(xì)介紹了Bootstrap零基礎(chǔ)學(xué)習(xí)第一課:模板,感興趣的小伙伴們可以參考一下2016-07-07JS函數(shù)進(jìn)階之prototy用法實例分析
這篇文章主要介紹了JS函數(shù)進(jìn)階之prototy用法,結(jié)合實例形式分析了JavaScript函數(shù)中使用prototy擴(kuò)展屬性相關(guān)操作技巧,需要的朋友可以參考下2020-01-01js取float型小數(shù)點(diǎn)后兩位數(shù)的方法
js中取小數(shù)點(diǎn)后兩位方法最常用的就是四舍五入函數(shù)了,前面我介紹過js中四舍五入一此常用函數(shù),這里正好用上,下面我們一起來看取float型小數(shù)點(diǎn)后兩位一些方法總結(jié)2014-01-01