我有一個網站。當用戶登錄時,會話詳細信息將被加載。 當用戶註銷會話詳細信息將被放棄。 (通過單擊註銷菜單註銷) 當用戶只需關閉瀏覽器,然後如何銷燬會話。ASP.net會話如果他關閉瀏覽器會破壞
在下次它獲得日誌與相同的會話數據。我需要避免這一點。
我有一個網站。當用戶登錄時,會話詳細信息將被加載。 當用戶註銷會話詳細信息將被放棄。 (通過單擊註銷菜單註銷) 當用戶只需關閉瀏覽器,然後如何銷燬會話。ASP.net會話如果他關閉瀏覽器會破壞
在下次它獲得日誌與相同的會話數據。我需要避免這一點。
隨着你註銷的處理的一部分,需要調用Session.clear()來清除鍵/值對:
http://msdn.microsoft.com/en-us/library/system.web.sessionstate.httpsessionstate.clear.aspx
您可以配置您的會話以更快地超時。
在web.config中:
< sessionState ... timeout="5" />
你有基本上有兩種選擇:
每個解決方案都可以在99%的情況下工作,如果將它們組合在一起,則應該在99.99%的情況下設置相當多。取決於這種行爲對你有多重要。
您可以使用Page.OnUnload javascript事件向調用Session.Abandon()的頁面發出請求。這會導致用戶會話在他離開您的網站時被刪除。
您可以詳細說明一點嗎? – SearchForKnowledge 2014-05-19 16:34:21
聽起來像您正在使用持久cookie來存儲身份驗證票證。嘗試將SetAuthCookie方法的第二個參數(createPersistentCookie)設置爲false,即FormsAuthentication.SetAuthCookie(「myusername」,false);
這是一個有趣的post詳細說明這一點。
當用戶離開網站時,不會調用Page.Unload(),當HTML被髮送到瀏覽器之前,它會在引擎完成呈現時調用它。一旦發生,就無法訪問該頁面。
我知道在PHP中,你可以使用AJAX調用一個PHP函數與JavaScript。我不知道ASP.Net是否可行,還是會爲會話工作。
try
{
Session["Admin"] = null;
Response.Cache.SetExpires(DateTime.UtcNow.AddMinutes(-1));
Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Cache.SetNoStore();
Session.Abandon();
Session.Clear();
Page.Response.Cache.SetCacheability(HttpCacheability.NoCache);
Response.Redirect("Dep_NewUserCreate.aspx");
}
catch(Exception ExLink)
{
Response.Redirect("Dep_NewUserCreate.aspx");
}
這個問題不夠清楚,它的表面上,似乎你問怎麼註銷,當有人直接關閉瀏覽器窗口,在這裏,因爲它似乎你問如何刪除會話數據,當他們註銷。 – AnthonyWJones 2009-01-12 13:49:00