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()来更新票证。此方法将检查当前故障单是否已过期,如果没有,则延长过期时间。您可以在每次向您的网站发送请求时调用此方法,这将在用户继续使用您的网站时进一步“过期”。