2011-08-29 83 views
0

我在MVC3中有登錄功能。爲什麼cookies沒有被刪除,用戶仍然登錄

private bool UserControll(string name, string password, string token = null) 
{ 
    User user; 
user = userRepos.LogOn(name, password, Request.ServerVariables["REMOTE_ADDR"]); 
if (user.IsAuthenticated) 
{ 
     FormsAuthenticationTicket authTicket; 
     authTicket = new FormsAuthenticationTicket(1, user.SessionId, DateTime.Now, DateTime.Now.AddMinutes(1), false, ""); 

     string cookieContents = FormsAuthentication.Encrypt(authTicket); 
     var cookie = new HttpCookie(FormsAuthentication.FormsCookieName, cookieContents) 
      { 
       Expires = authTicket.Expiration, 
       Path = FormsAuthentication.FormsCookiePath, 
      }; 

     HttpContext.Response.Cookies.Add(cookie); 
} 

我想不通爲什麼餅乾是不是被1分鐘後刪除(只是爲了測試,看看DateTime.Now.AddMinutes(1))。當我在會議開始時檢查FireFox中的cookies時,會顯示:過期時間:29.08.2011 12:07(當前時間+一分鐘)。一分鐘後顯示:過期:會話結束。會話沒有被刪除,用戶沒有註銷。

我不明白爲什麼cookie沒有被刪除,用戶沒有註銷。

回答

2

您還沒有提及Cookie過期時間。您也可以使用Session.Clear();清除所有會話。

創建一個註銷頁面,其中使用Session.Clear();函數在頁面On_Load()函數中。這會導致清除頁面中創建的所有會話。

1

當您達到cookie的失效日期後,您是否在檢查cookie是否被刪除之前向站點發出了請求?因爲在提出請求之前Cookie不會被刪除。