2012-02-14 64 views
1

當用戶註銷時,我想清除所有歷史記錄和緩存。以便用戶無法返回頁面。如何清除用戶在ASP.NET中註銷時的所有歷史記錄?

對於這些目的,我是使用下面的login.aspx頁: -

if (Request.QueryString["action"] == "logout") 
     { 

      FormsAuthentication.SignOut(); 
      Session["CurrentUser"] = null; 
      Session["IsJobPoster"] = null; 
      Session["AdminEmail"] = null; 
      Session["IsAdmin"] = null; 
      Response.Buffer = true; 
      Response.ExpiresAbsolute = DateTime.UtcNow.AddDays(-1d); 
      Response.Expires = -1500; 
      Response.CacheControl = "no-cache"; 


    } 

但用戶可以去註銷回來後頁面。

請建議我使用可用的鏈接或示例代碼。

+0

hrm。通常'FormsAuthentication.SignOut()'應該這樣做。必須有更多的故事 – 2012-02-14 06:35:58

+0

我不確定你是否使用會員提供者。 如果您是,提供商將刪除您的cookie並將用戶重定向到登錄頁面。一旦用戶回來,用戶應該重新轉到登錄頁面。在ASP.NET MVC中使用表單身份驗證:http://msdn.microsoft.com/en-us/library/ff398049.aspx並在ASP.NET 2.0中使用成員資格http://msdn.microsoft.com/en-us/庫/ ff648345.aspx。 – 2012-02-14 06:40:12

+0

您無法刪除客戶端的瀏覽器歷史記錄,這是由Web瀏覽器控制的,不可與網頁混淆。 – Skuld 2012-02-14 15:41:59

回答

0

不確定.Net,但是,通常使用POST和過期頁面(通過適當的響應頭)並使用HTTP重定向應該刪除歷史記錄。此外,如果cookie用於維護會話,那麼用一些垃圾覆蓋cookie也會有幫助。

+0

您無法刪除客戶的歷史記錄,這是由瀏覽器控制的。 – Skuld 2012-02-14 15:40:58

+0

我的意思是後退按鈕的歷史(-1)頁面將會過期。不是全部瀏覽記錄。 – 2012-02-15 09:25:48

+0

正如我所說的,你不能在javascript /從網頁中刪除一個後退按鈕歷史元素,在一天結束時,這是瀏覽器控制的行爲,不受網站控制。想想如果他們在移除/更改/閱讀您的瀏覽器歷史記錄時,會在垃圾郵件網站上獲得的所有濫用行爲。 – Skuld 2012-02-15 12:03:00

0

我猜你正在看到客戶端緩存版本的頁面。

將緩存調用(Expires,CacheControl)移到if語句之外。您希望它們在每個請求中執行,以便需要登錄的頁面不會被緩存在客戶端。然後瀏覽器在回到歷史記錄時通知用戶該頁面無效/過時/過時並且需要刷新。這將啓動一個新的請求,該請求應該將用戶重定向到登錄頁面。

1

另外,是否有一個原因,你不使用Session.Abandon(),而不是?你應該考慮這一點,特別是如果你獲得更多的sessionvariables會更容易維護。

+0

你是正確的會議,我使用Session.Abandon。但我也想在用戶註銷時清除所有緩存大小。使用查詢字符串action = logout重定向到登錄頁面。 – 2012-02-16 04:12:40

0

用戶在註銷後能夠看到的上一頁是肯定在客戶端緩存的頁面。所以你要做的就是隻寫這樣的代碼(從你的複製):

Response.ExpiresAbsolute = DateTime.UtcNow.AddDays(-1d); 
Response.Expires = -1500; 
Response.CacheControl = "no-cache"; 
在那些被視爲通過登錄的用戶,使這些都不是在瀏覽器中緩存的頁面

。說得通?

+0

請在我的代碼中建議我正確。 – 2012-02-16 04:06:11

+0

@Sushant,我認爲你的代碼沒有問題。問題在於*你放置了你的代碼。您可以將其應用到需要驗證的頁面(例如/ account/details,/ account/profile等),而不是在註銷頁面中寫入該代碼。如果將這些代碼應用於這些頁面,那麼它們將不會緩存在瀏覽器中,因此當用戶單擊後退按鈕時,它們將被重定向到登錄頁面(正因爲瀏覽器中沒有緩存頁面)。 – 2012-02-16 10:29:20

+0

換句話說,您在註銷時不會擦除瀏覽器緩存。簡而言之,不要讓瀏覽器緩存經過驗證的頁面。 – 2012-02-16 10:30:23

相關問題