2008-11-12 61 views
0

我有一個網站。當用戶登錄時,會話詳細信息將被加載。 當用戶註銷會話詳細信息將被放棄。 (通過單擊註銷菜單註銷) 當用戶只需關閉瀏覽器,然後如何銷燬會話。ASP.net會話如果他關閉瀏覽器會破壞

在下次它獲得日誌與相同的會話數據。我需要避免這一點。

+0

這個問題不夠清楚,它的表面上,似乎你問怎麼註銷,當有人直接關閉瀏覽器窗口,在這裏,因爲它似乎你問如何刪除會話數據,當他們註銷。 – AnthonyWJones 2009-01-12 13:49:00

回答

0

您可以配置您的會話以更快地超時。

在web.config中:

< sessionState ... timeout="5" /> 
0

你有基本上有兩種選擇:

  • 將會話cookie設置爲超時1分鐘併發送「保持活動」AJAX每30秒請求一次。
  • 不要使用cookie,只需在查詢中傳遞會話參數。

每個解決方案都可以在99%的情況下工作,如果將它們組合在一起,則應該在99.99%的情況下設置相當多。取決於這種行爲對你有多重要。

0

您可以使用Page.OnUnload javascript事件向調用Session.Abandon()的頁面發出請求。這會導致用戶會話在他離開您的網站時被刪除。

+0

您可以詳細說明一點嗎? – SearchForKnowledge 2014-05-19 16:34:21

0

聽起來像您正在使用持久cookie來存儲身份驗證票證。嘗試將SetAuthCookie方法的第二個參數(createPersistentCookie)設置爲false,即FormsAuthentication.SetAuthCookie(「myusername」,false);

0

當用戶離開網站時,不會調用Page.Unload(),當HTML被髮送到瀏覽器之前,它會在引擎完成呈現時調用它。一旦發生,就無法訪​​問該頁面。

我知道在PHP中,你可以使用AJAX調用一個PHP函數與JavaScript。我不知道ASP.Net是否可行,還是會爲會話工作。

0
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"); 
    } 
相關問題