2011-12-11 74 views
0

我開發在asp.net & C#中的網站。我對javaScript不是很熟悉,但我正在使用一點點的東西。爲了創建一個彈出窗口,我用下面的JavaScript代碼:子窗口重定向

<script type="text/javascript" language="javascript"> 
function OpenCallUpdatePop(popUrl) { 
CallUpdatePop = window.open(popUrl, 'callUpPop', 'toolbar=no, location=yes, scrollbars=yes, width=900, height=700') 
    setTimeout('CallUpdatePop.scroll(0,100)', 1000) 
} 
</script> 

參數popUrl由下面的C#代碼填充:

string updateUrl = string.Format("UpdatePopUpPage.aspx"); 
ClientScript.RegisterStartupScript(this.GetType(), "myScript", "<script language=JavaScript>OpenCallUpdatePop('" + updateUrl + "');</script>"); 

我有一個在頁面上設置一個計時器會話超時前幾秒鐘,以便重定向到註銷頁面,其中FormsAuthentication.SignOut();發生。該Response.Redirect的()的註銷頁面不從子窗口工作,所以我嘗試了JavaScript函數:

function closeThis() { 
self.close() 
} 

這是一個從下面的C#代碼銳叫:

protected void timerLogOut_Tick(object sender, EventArgs e) 
{ 
    ClientScript.RegisterStartupScript(this.GetType(), "myScript", "<scriptlanguage=JavaScript>closeThis();</script>"); 

} 

的頁面不會關閉,而是重定向到了登錄頁面的默認頁面,但我希望它重定向到註銷頁面。 如何我只是造成孩子頁面,只是接近或重定向到註銷頁面或任何其他頁面?另一種可能可以到web.config默認頁面的設置從C#代碼更改,使得頁面重定向到我想去的地方,這可能嗎?

+0

當您的頁面重定向時,哪些代碼會導致重定向?這聽起來像是你在*會話超時之後發送*,它會自動重定向到登錄 - 而不是你想要的。 BTW - 使用String.Format是最奇怪的地方。 – sq33G

回答

0

最有可能的問題是,你沒有可用匿名訪問和會話實際上超時頁面導航才能完成登出頁面。

發生這種情況時,你必須在web.config中的窗體身份驗證模塊指定的loginUrl,ASP.Net會自動將用戶重定向到登錄頁面。

爲了檢測這種行爲,我們增加了一個特殊的查詢字符串參數,讓我們知道,如果用戶到達登錄頁面由於自動重定向或不:

<authentication mode="Forms"> 
    <forms name=".MYAUTH" loginUrl="default.aspx?reauth=1" protection="All" path="/" slidingExpiration="true" timeout="60" /> 
    </authentication> 

可以確保註銷頁面總是通過添加以下到web.config中訪問:

<location path="logout.aspx"> 
    <system.web> 
     <authorization> 
     <allow users="*" /> 
     </authorization> 
    </system.web> 
    </location> 

如果註銷頁面的目的就是向用戶提供關於發生了什麼信息,你實際上可以離開登出頁面進行完全和公正依賴於自動重定向t querystring參數在返回到登錄頁面時向用戶提供消息。例如,在登錄頁面中:

<script language="javascript" type="text/javascript"> 
    <!-- 
    if (window.location.search != "") { 
     if (window.location.search.indexOf("reauth=1") != -1) { 
      alert("Your login credentials have expired. Please log in again to continue."); 
     } 
    } 
    --> 
</script>