代码之家  ›  专栏  ›  技术社区  ›  Rob

控制FormsAuthentication createPersistentCookie过期

  •  15
  • Rob  · 技术社区  · 14 年前

    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周内返回站点,而不需要重新验证)。之后,他们将被要求再次登录)。

    如何设置持久cookie的过期时间?

    1 回复  |  直到 14 年前
        1
  •  36
  •   splattne    12 年前

    你不能这样做吗?

    <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 :

    超时 属性描述如下:

    以整数形式指定时间 到期。如果幻灯片过期 属性为true时,超时 属性是滑动值,过期 在上次请求 收到了。以防止 性能,并避免多次 浏览器警告 打开cookie警告,cookie 当超过一半的 指定的时间已过。这可能 是“30”(30分钟)。

    下注ASP.NETV1.1持久性 Cookie不会超时,无论 超时属性的设置。 持久性Cookie确实超时 根据超时属性

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

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

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