【问题标题】:Persistent cookie timeout with FormsAuthenticationFormsAuthentication 的持久 cookie 超时
【发布时间】:2011-12-02 16:09:39
【问题描述】:

我正在创建一些“记住我”功能作为登录的一部分。

当我在登录过程中使用以下内容创建持久性 cookie 时:

FormsAuthentication.SetAuthCookie("someusername", true);

我的 Web.Config 如下所示:

<authentication mode="Forms">
  <forms loginUrl="~/sign-in" timeout="2880" />
</authentication>

在要求用户再次提供登录详细信息之前,cookie 的有效期是多久? 另外,设置持久性cookie时是否有/默认使用的时间长度是多少?

【问题讨论】:

    标签: asp.net cookies forms-authentication remember-me


    【解决方案1】:

    感谢这篇文章,我找到了我正在寻找的答案:

    Dan Sellers's WebLog

    他说的地方:

    在 ASP.NET 2.0 中,持久化和基于会话的超时值 cookie 由&lt;forms/&gt;元素上的超时属性控制

    所以在我的示例中,持久性 cookie 将在 48 小时内过期。

    【讨论】:

    • 这是从 .NET 1.1 到 2 的更改:“注意在 ASP.NET V1.1 下,无论超时属性的设置如何,持久 cookie 都不会超时。但是,从 ASP 开始。 NET V2.0,持久性 cookie 会根据超时属性超时。”很好的发现。应该注意的是,如果您在具有不同值的代码中创建身份验证票证,它将胜过 web.config 中的设置...如果您需要这种灵活性。
    • 重要的部分是,如果你像我一样老,并且记得传递“true”作为第二个参数似乎让你永远登录,你是对的 - 它设置了 cookie 5 年。现在,如果您通过它并且不设置超时值,它默认为“30” - 仅 30 分钟。与 5 年相比大幅下降,即
    【解决方案2】:

    timeout 在您的 authentication 模块中被提及为:

    <forms loginUrl="~/sign-in" timeout="2880" />
    

    timeout="2880"。这个 2880 值以分钟为单位。因此,如果您将 2880 除以 60,您将得到 48 小时,这就是您问题的答案。用户必须在 48 小时期限届满后再次提供其登录凭据。

    希望对您有所帮助。

    【讨论】:

    • 超时最大值? HttpSessionState.Timeout525,600 分钟(1 年)
    【解决方案3】:

    我相信永久 cookie 是无限期有效的(当然,除非用户清除他们的浏览器 cookie)。 timeout 属性只是告诉表单身份验证保持会话活动多​​长时间。

    看这里:

    Cookie Confusion with FormsAuthentication.SetAuthCookie() Method

    【讨论】:

    • 区别:slidingExpiration vs time Expiration vs Persistent cookie?
    猜你喜欢
    • 2012-07-01
    • 2015-11-14
    • 1970-01-01
    • 2014-03-25
    • 2010-12-12
    • 1970-01-01
    • 2012-04-14
    • 2014-02-05
    • 1970-01-01
    相关资源
    最近更新 更多