2015-11-27 76 views
0

我想在asp.net(web表單)中實現登錄和註銷。在我的網絡表單中,我有兩個頁面,分別是Default和Main。從默認頁面,當我用用戶名和密碼登錄時,它會重定向到主頁面。當我按回按鈕時,它直接重定向到默認頁面。對於這一點,我複製javascript代碼到我的默認頁面在asp.net web表單中維護登錄和註銷會話

<script type = "text/javascript" > 
    function preventBack() { window.history.forward(); } 
    setTimeout("preventBack()", 0); 
    window.onunload = function() { null }; 

從計算器源question

登錄後,當我點擊後退按鈕在我的瀏覽器(Chrome)首先它顯示的默認頁面,然後顯示主頁面。即當我點擊後退按鈕時頁面會閃爍。

它顯示主頁與問題成功。 我應該執行停止顯示默認頁面,當我點擊後退按鈕

更新:

<script type = "text/javascript" > 
    history.pushState(null, null, 'Default.aspx'); 
    window.addEventListener('popstate', function (event) { 
     history.pushState(null, null, 'Default.aspx'); 
    }); 
</script> 

我放在默認頁面的代碼

+0

所以基本上,你想要用戶停留在同一主頁上,他從默認頁面登錄後,對不對? –

+0

是的,但如何做到這一點 – ifaminsi

回答

2

還有一個重要的事情,你應該知道這裏。

一個不能禁用瀏覽器後退按鈕功能只有可以做的事是阻止它。

不管怎麼樣,你不能按鈕。但是,你可以做的是放置一些邏輯,並防止按鈕做它的意圖。

現在對於你已經顯示的腳本來說,它應該可以正常工作,而在這裏嘗試的另一件事是在默認頁面和主頁面之間放置一個中介頁。所以當你登錄的時候,控件會流到中介頁面,然後它會重定向到主頁面。現在,當用戶按下主頁面上的返回按鈕時,控件將流入中介頁面,該頁面將再次將用戶重定向到其主頁面。

效果將與您的腳本相同,但放置頁面可以幫助您編寫會話處理代碼和一些服務器端檢查(如果需要)。

但有一點可以肯定,瀏覽器後退按鈕將保持原樣。

希望這會有所幫助。

+0

是否有任何其他的可能性停留在同一頁中,無需添加中介頁...? – ifaminsi

+0

沒有。因爲作爲開發人員,您無法處理瀏覽器回退事件。所以人們傾向於使用這種技術來解決這個問題。現在爲你的最後一次嘗試,你可以參考這個鏈接,並嘗試這個人發佈的解決方案。 http://stackoverflow.com/questions/19926641/how-to-disable-back-button-in-browser-using-javascript –

+0

當我按下返回按鈕,它應該留在同一頁面,但當我按照上述鏈接它重定向到帶有HTTP 404錯誤的頁面 – ifaminsi

0

正如馬特所說,你不能不同意背部的行爲。但是,您可以檢查用戶是否已登錄並輕鬆將其重定向到主頁面。

您只需要在默認頁面上檢查用戶是否已登錄,如果他們然後將其重定向到主頁面,這種方式即使用戶單擊回來,他們也會被帶回到主頁。此外,可以在註銷後進入默認頁面。

+0

這將不可能作爲默認頁面開箱即用可能會被緩存並加載。 – LGSon

+0

我的主要問題是在從默認頁面登錄後,當用戶點擊返回按鈕時,它不應該重定向到默認頁面(即,在頁面中登錄)。我不是想禁用後退按鈕只是我想留在主頁 – ifaminsi

0

另一種方法可能是使用location.replace("...."),它取代了現有的文檔,用戶不能使用後退按鈕返回,因爲頁面不存在於URL歷史記錄中。

源:https://developer.mozilla.org/en-US/docs/Web/API/Location/replace

+0

如何在網絡表單中使用此代碼 – ifaminsi

+0

本文的答案將指向你一個好方向:http://stackoverflow.com/questions/6990729 /簡單的Ajax外形使用JavaScript的-NO-jquery的 – LGSon