2

Stackoverflow 与许多其他网站一样使用 OpenId。但是,我很少需要向 Stackoverflow 提供我的 OpenId,而对于其他启用 OpenId 的网站,我必须每天或每周提供一次。

这向我表明会话的到期是网站而不是 OpenId 提供者。

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

我怎样才能强制这个 cookie 过期,比如在 2020 年,而不是默认值。

4

2 回答 2

4

来自MSDN - 解释: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);
于 2010-02-09T17:31:35.713 回答
1

您可以使用FormsAuthentication.RenewTicketIfOld()更新票证。此方法将检查当前票证是否已过期,如果未过期,则延长其过期时间。您可以在对您站点的每个请求上调用此方法,这将在未来随着用户继续使用您的站点而进一步“滑动”到期。

于 2010-02-09T17:13:18.883 回答