OpenId ASP MVC身份验证,有效期很长

时间:2010-02-09 17:05:36

标签: asp.net-mvc authentication openid forms-authentication dotnetopenauth

Stackoverflow使用OpenId和许多其他网站一样。但是,我很少需要将OpenId提供给Stackoverflow,而对于其他支持OpenId的网站,我必须每天或每周进行一次。

这告诉我,会话的到期时间是网站,而不是OpenId提供商。

查看ASP MVC中的DotNetOpenId代码,我可以看到OpenId提供程序成功进行身份验证后,使用标识符和布尔参数调用FormsAuthentication.SetAuthCookie来确定是否应该保留cookie。

如何强制此Cookie过期,比如在2020年,而不是默认值。

2 个答案:

答案 0 :(得分: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);

答案 1 :(得分:1)

您可以使用FormsAuthentication.RenewTicketIfOld()更新故障单。此方法将检查当前故障单是否已过期,如果没有,则延长其过期时间。您可以在每次向您的网站发出请求时调用此方法,这将在用户继续使用您的网站时进一步“过期”到期。