控制FormsAuthentication createPersistentCookie到期

时间:2010-09-20 04:22:14

标签: asp.net asp.net-mvc-2

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

if (ValidateUser(model.Email, model.Password)
{
  FormsAuthentication.SetAuthCookie(model.Email, model.RememberMe);
  ...

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

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

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

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

1 个答案:

答案 0 :(得分:36)

你能不这样做吗?

<system.web>
    <authentication mode="Forms">
          <forms timeout="20160"/>
    </authentication>
</system.web>

超时以分钟为单位。

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

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

FormsAuthentication.SetAuthCookie(someMembershipName, false);

在以下情况下会导致Cookie过期:

  • 用户关闭浏览器或
  • 达到超时时间。

与你相反:

FormsAuthentication.SetAuthCookie(someMembershipName, true);

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

HTH

修改

MSDN获取:

超时属性描述如下:

  

以整数指定时间   分钟,之后的cookie   到期。如果是SlidingExpiration   属性为true,超时   attribute是一个滑动值,即将到期   在指定的分钟数   在最后一次请求之后   收到了。为了防止妥协   性能,并避免多重   有用户的浏览器警告   Cookie警告已打开,Cookie   当超过一半的时候更新   指定的时间已过。这有可能   导致精度下降。默认   是“30”(30分钟)。

     

注意在ASP.NET V1.1下持久化   饼干不会超时,无论如何   超时属性的设置。   但是,从ASP.NET V2.0开始,   持久性cookie会耗尽时间   根据超时属性

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

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

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

<sessionstate 
      mode="inproc"
      cookieless="false" 
      timeout="20"