FormsAuthentication 的持久 cookie 超时
Posted
技术标签:
【中文标题】FormsAuthentication 的持久 cookie 超时【英文标题】:Persistent cookie timeout with FormsAuthentication 【发布时间】: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时是否有/默认使用的时间长度是多少?
【问题讨论】:
【参考方案1】:感谢这篇文章,我找到了我正在寻找的答案:
Dan Sellers's WebLog
他说的地方:
在 ASP.NET 2.0 中,持久化和基于会话的超时值 cookie 由
<forms/>
元素上的超时属性控制
所以在我的示例中,持久性 cookie 将在 48 小时内过期。
【讨论】:
这是从 .NET 1.1 到 2 的更改:“注意在 ASP.NET V1.1 下,无论超时属性的设置如何,持久 cookie 都不会超时。但是,从 ASP 开始。 NET V2.0,持久性 cookie 会根据超时属性超时。”很好的发现。应该注意的是,如果您在具有不同值的代码中创建身份验证票证,它将胜过 web.config 中的设置...如果您需要这种灵活性。 重要的部分是,如果你像我一样老,并且记得传递“true”作为第二个参数似乎让你永远登录,你是对的 - 它设置了 cookie 5 年。现在,如果您通过它并且不设置超时值,它默认为“30” - 仅 30 分钟。与 5 年相比大幅下降,即timeout
在您的 authentication
模块中被提及为:
<forms loginUrl="~/sign-in" timeout="2880" />
timeout="2880"。这个 2880 值以分钟为单位。因此,如果您将 2880 除以 60,您将得到 48 小时,这就是您问题的答案。用户必须在 48 小时期限届满后再次提供其登录凭据。
希望对您有所帮助。
【讨论】:
超时最大值?HttpSessionState.Timeout
是 525,600 分钟(1 年)【参考方案3】:
我相信永久 cookie 是无限期有效的(当然,除非用户清除他们的浏览器 cookie)。 timeout 属性只是告诉表单身份验证保持会话活动多长时间。
看这里:
Cookie Confusion with FormsAuthentication.SetAuthCookie() Method
【讨论】:
区别:slidingExpiration vs time Expiration vs Persistent cookie?以上是关于FormsAuthentication 的持久 cookie 超时的主要内容,如果未能解决你的问题,请参考以下文章
`FormsAuthentication.SignOut();` 不适用于 IIS `Windows Authentication` 选项已启用
FormsAuthentication.SetAuthCookie 方法登录
FormsAuthentication.SetAuthCookie 在 MVC 5 中不 [Authorize]
FormsAuthentication.SetAuthCookie