表单auth cookie在浏览器关闭时仍然存在

时间:2012-03-22 18:49:25

标签: asp.net webforms forms-authentication

我正在玩表单身份验证,如果用户关闭浏览器而不是点击网站上的“注销”按钮,我发现了一个问题。

如果用户关闭浏览器,则表单auth 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. 当用户关闭/关闭时,表单auth cookie仍然存在     即使它不是持久性cookie,浏览器也会关闭
  2. 如果用户在加载时具有现有的表单身份验证cookie 站点上的Request.IsAuthenticated检查评估为false 首先在调试器中命中,然后在第二个时调用true。前端 页面显然会在第一次打击时检查这些内容,因为它们 评价为假。

1 个答案:

答案 0 :(得分:0)

想出来。

似乎是一个Firefox问题。 Firefox用于允许用户保存其标签,但删除了该功能。保存标签还保存了与标签相关联的任何会话cookie。

about:config中的设置是

browser.showQuitWarning

我在firefox 11上,所以默认情况下这应该被禁用,但我的配置不知何故被破坏了,我不得不通过使用安全模式和恢复默认设置来重置它。现在它可以工作