【问题标题】:Forms auth cookie persists on browser close表单身份验证 cookie 在浏览器关闭时仍然存在
【发布时间】:2012-04-07 09:17:07
【问题描述】:

我在玩表单身份验证,我注意到如果用户关闭浏览器而不是点击网站上的退出按钮会出现问题。

如果用户关闭浏览器,表单身份验证 cookie 在加载备份时仍然存在,即使它是仅会话 cookie 并且没有持久化。在我的母版页后面的代码中,我有以下内容。

母版页代码

  protected void Page_Init(object sender, EventArgs e)
    {        
        // if authenticated, initialize session
        if (Request.IsAuthenticated)
        {            
            // set stuff
        }        
    }

当我第一次调试它时,它命中 Request.IsAuthenticated 它是假的,然后它再次命中它,它是真的。问题出在前端页面中,我进行了一些检查以查看用户是否已通过身份验证,并且在评估这些条件时为假。

母版页前端

 <% if (Request.IsAuthenticated) { %>
       <li>Admin Page</li>
 <% } %>

设置验证 Cookie

  FormsAuthentication.SetAuthCookie(username, false);

web.Config

   <authentication mode="Forms">
      <forms 
          loginUrl="/"
          name="ASPXFORMSAUTH" 
          timeout="360"         
      />           
    </authentication>

总结

  1. 当用户刚刚关闭/关闭 浏览器关闭,即使它不是持久性 cookie
  2. 如果用户在加载 站点上的 Request.IsAuthenticated 检查评估为 false 首先在调试器中命中,然后在第二个中命中。前端 page 显然会在第一次点击时检查这些东西,因为它们 评估为假。

【问题讨论】:

    标签: asp.net webforms forms-authentication


    【解决方案1】:

    想通了。

    似乎是 Firefox 问题。 Firefox 曾经允许用户保存他们的标签,但删除了该功能。保存选项卡还会保存与选项卡关联的所有会话 cookie。

    about:config 中的设置是

    browser.showQuitWarning
    

    我使用的是 firefox 11,因此默认情况下应该禁用它,但我的配置不知何故损坏了,我不得不使用安全模式并恢复默认设置来重置它。现在可以了

    【讨论】:

      猜你喜欢
      • 2015-08-02
      • 2020-08-06
      • 2017-07-31
      • 2011-03-07
      • 1970-01-01
      • 1970-01-01
      • 2012-12-13
      相关资源
      最近更新 更多