【问题标题】:OpenId ASP MVC Authentication with long expiryOpenId ASP MVC 身份验证,过期时间长
【发布时间】:2010-02-09 17:05:36
【问题描述】:

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

    来自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);
    

    【讨论】:

    • 您不必做所有这些工作。只需更改 web.config 文件中的超时值:msdn.microsoft.com/en-us/library/1d3t3c61.aspx
    • 确实,你是对的。但是 Khash 可能想以编程方式设置 cookie 过期时间?
    • 此方法不适用于带有 DotNetOpenId 的 ASP MVC。然而,正如安德鲁所说,使用 web.config 中的设置有效!谢谢。如何将其标记为正确答案?
    • 您可以自己回答问题并将其标记为答案。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-03
      • 2014-10-07
      • 2017-02-01
      • 2018-06-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多