2009-12-18 79 views
3

我將c#中的身份驗證cookie設置爲持久性,並且從現在開始的一年結束日期,但設置後過期不會過長。代碼如下...c#.net - 身份驗證提前過期

DateTime endDate = new DateTime(); 
endDate = DateTime.Now.AddYears(1); 

FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1, 
                  username, 
                  DateTime.Now, 
                  endDate, 
                  true, 
                  userId.ToString(), 
                  FormsAuthentication.FormsCookiePath); 


string encryptedTicket = FormsAuthentication.Encrypt(ticket); 

HttpCookie authCookie = new HttpCookie(
         FormsAuthentication.FormsCookieName, 
         encryptedTicket); 

authCookie.Expires = endDate; 

Response.Cookies.Add(authCookie); 

任何想法?

+0

當你說「不太長」時,你的意思是多久?您是否使用過像HttpWatch這樣的工具來調查是否不再發送cookie,或者表單身份驗證不再識別它? –

+0

表單身份驗證在約30分鐘後無法識別該用戶登錄。我還沒有嘗試過使用HttpWatch,但我確實在Firefox中使用了一個視圖cookie添加,以確保cookie存在並被設置爲正確的截止日期。 我看到了兩個cookie,一個是.ASPXAUTH,有正確的截止日期,另一個ASP.NET_SessionId是「Session」作爲截止日期。 – Tija

回答

3

我想通了......當我檢查用戶是否被驗證,我用下面的代碼...

if (HttpContext.Current.User != null && HttpContext.Current.User.Identity.IsAuthenticated) 
{ 
    return true; 
} 

當我刪除了第一次檢查(即HttpContext.Current.User != null)它開始工作。雖然我不太瞭解HttpContext.Current.User爲null時HttpContext.Current.User.Identity.IsAuthenticated是否可以爲true。

無論哪種方式,它現在的作品,所以沒有問題。