我有一個需要用戶名和密碼的應用程序。當用戶點擊註銷按鈕時,它運行:從Web應用程序登錄某人的最佳方式是什麼?
private void LogOut()
{
Session["SessionName"] = null;
Session.Remove("SessionName");
System.Web.Security.FormsAuthentication.SignOut();
Response.Cookies.Remove("AuthCookie");
HttpCookie c = new HttpCookie("AuthCookie");
c.Expires = DateTime.Now.AddYears(-1);
Response.Cookies.Add(c);
Session.Clear();
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetExpires(DateTime.Now.AddDays(-1));
Response.Cache.SetNoStore();
Response.Cache.SetNoServerCaching();
Session.Abandon();
Response.Redirect("~/user/login.aspx");
}
問題是當我測試安全性時。當我轉到一個頁面來更改數據庫中的數據時,我可以使用Fiddler來「記錄」此請求。 在我註銷應用程序的之後,我仍然可以在Fiddler中重播此請求,就像我仍然登錄一樣。事實上,當我在代碼中放置中斷時,仍然可以看到所有Cookie和會話信息。只有在會話到期後(從超時),實際會話纔會消失。
爲什麼我在cookie過期並放棄會話後仍能看到這些信息?當用戶點擊註銷按鈕時,如何完全清除cookie和會話信息?