2012-04-01 36 views
0

登錄後,我將進入主頁。但如果我再次按下瀏覽器的後退按鈕,則從主頁將系統發送給登錄頁面。抵制登錄後回去登錄

我該如何抵制我的用戶這樣做。如果他們在登錄時按下後退按鈕,系統將重新發送他/她到同一頁面,而不是登錄。

+0

你爲什麼要這麼做?想象一下,你自己是一個網站的用戶,它的行爲方式是這樣的 - 當你按下後退按鈕時,你是否真的喜歡網站違反/忽略? – Yahia 2012-04-01 14:19:27

+0

如果您登錄到oracle論壇這樣的網站,您將在登錄後首次登錄論壇時看到,如果按下後退按鈕,它會將您發送到錯誤頁面。我正在嘗試實現它,就像將用戶置於主頁中一樣。 – 2012-04-01 14:23:51

回答

1

在登錄頁面添加一個片段,檢查用戶是否已經登錄。如果他/她是;然後將用戶重定向到登錄頁面。

// In the login page 
protected void Page_Load(object sender, EventArgs e) 
{ 
    if (User.Identity.IsAuthenticated) 
      Response.Redirect("~/Default.aspx"); 
} 
+0

感謝您的回覆。我已經添加了這些代碼片段,但它不起作用,因爲如果我在主頁時按下返回按鈕,它不會調用登錄頁面的Page_Load。我將System.Diagnostics.Debug.WriteLine放入Page_Load中以查看它是否被調用。但是這個聲明不會打印任何東西,這意味着它沒有被調用。 – 2012-04-01 14:21:23

+0

檢查正確的方法簽名。同樣使用AutoEventWireup = True – 2012-04-01 15:09:39

+0

之前AutoEventWireup被設置爲true。 – 2012-04-01 15:55:46

1

不要這樣做;你會做的唯一事情就是煩人。

後退按鈕應該回去。

2

在你的Login.aspx頁面的頂部,添加以下行,以防止瀏覽器緩存的登錄頁面:

<%@ OutputCache Location="None" NoStore="True" %> 

然後,在Login.aspx.cs,重定向到您的主頁,如果用戶已經登錄:

protected override void OnPreInit(EventArgs e) 
{ 
    if (this.Request.IsAuthenticated) 
     this.Response.Redirect("~/Home.aspx"); 

    base.OnPreInit(e); 
}