2

Stackoverflow使用OpenId許多其他網站。然而,我很少需要在其他OpenId網站上提供OpenId到Stackoverflow,我必須每天或每週做一次。OpenId ASP MVC驗證與長期到期

這向我建議會話的到期時間是與網站而不是OpenId提供商。

看看ASP MVC中的DotNetOpenId代碼,我可以看到,通過OpenId提供程序成功進行身份驗證後,FormsAuthentication.SetAuthCookie被標識符和布爾參數調用以確定是否應該保留cookie。

我該如何強制這個cookie過期,比如說在2020年,而不是默認值是什麼。

回答

4

MSDN - Explained: Forms Authentication in ASP.NET 2.0

FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1, 
    "userName", 
    DateTime.Now, 
    new DateTime(2020, 01, 01), // value of time out property 
    false, // Value of IsPersistent property 
    String.Empty, 
    FormsAuthentication.FormsCookiePath); 

string encryptedTicket = FormsAuthentication.Encrypt(ticket); 

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

authCookie.Secure = true; 

Response.Cookies.Add(authCookie); 
+0

+1的源代碼總是有用的 – 2010-02-09 17:39:50

+3

你不必做所有的工作雖然。只需更改web.config文件中的超時值:http://msdn.microsoft.com/en-us/library/1d3t3c61.aspx – 2010-02-09 20:55:16

+1

確實,您是對的。但是Khash可能希望以編程方式設置cookie過期時間? – 2010-02-09 21:00:21

1

您可以使用FormsAuthentication.RenewTicketIfOld()來更新票證。此方法將檢查當前故障單是否已過期,如果沒有,則延長過期時間。您可以在每次向您的網站發送請求時調用此方法,這將在用戶繼續使用您的網站時進一步「過期」。