控制FormsAuthentication createPersistentCookie到期

Rob*_*Rob 15 asp.net asp.net-mvc-2

在ASP.NET MVC2应用程序中,我们有标准的登录操作...

if (ValidateUser(model.Email, model.Password)
{
  FormsAuthentication.SetAuthCookie(model.Email, model.RememberMe);
  ...
Run Code Online (Sandbox Code Playgroud)

其中SetAuthCookie的第二个参数是createPersistentCookie以下文档:

createPersistentCookie
  Type: System.Boolean
    true to create a persistent cookie
    (one that is saved across browser sessions); otherwise, false.
Run Code Online (Sandbox Code Playgroud)

我们希望持久性cookie在2周后过期(即,用户可以在2周内返回该站点,而不需要重新进行身份验证.之后,他们将被要求再次登录).

我们如何设置持久cookie的到期时间?

RPM*_*984 36

你能不这样做吗?

<system.web>
    <authentication mode="Forms">
          <forms timeout="20160"/>
    </authentication>
</system.web>
Run Code Online (Sandbox Code Playgroud)

超时以分钟为单位.

无论您是否要创建持久性cookie,此超时值都是如此.它只是说如果你没有明确地终止cookie(FormsAuthentication.SignOut),它将在给定的时间段后自动过期.

换句话说,如果你这样做:

FormsAuthentication.SetAuthCookie(someMembershipName, false);
Run Code Online (Sandbox Code Playgroud)

将导致cookie在以下时间到期:

  • 用户关闭浏览器,或
  • 达到超时.

与你做的相反:

FormsAuthentication.SetAuthCookie(someMembershipName, true);
Run Code Online (Sandbox Code Playgroud)

将导致cookie仅在达到超时时到期.

HTH

编辑:

MSDN获取:

超时属性描述如下:

指定cookie过期的时间(以整数分钟为单位).如果SlidingExpiration属性为true,则timeout属性是一个滑动值,在收到最后一个请求之后的指定分钟数到期.为了防止性能受损,并为打开cookie警告的用户避免多个浏览器警告,当超过指定时间的一半时间过去时,cookie会更新.这可能会导致精度损失.默认值为"30"(30分钟).

注意在ASP.NET V1.1下,无论超时属性的设置如何,持久性cookie都不会超时. 但是,从ASP.NET V2.0开始,持久性cookie会根据超时属性执行超时.

换句话说,此到期设置仅处理表单身份验证cookie.

表单身份验证cookie是一个客户端cookie,它与您可能拥有的其他服务器端会话(即购物车)无关.

该会话已过期,具有以下设置:

<sessionstate 
      mode="inproc"
      cookieless="false" 
      timeout="20" 
Run Code Online (Sandbox Code Playgroud)