2012-03-22 104 views
0

我当时正在使用表单身份验证,如果用户关闭浏览器而不是点击网站上的退出按钮,则发现问题。表单验证Cookie在浏览器上仍然存在关闭

如果用户关闭浏览器,则表单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> 
<% } %> 

设置验证曲奇

FormsAuthentication.SetAuthCookie(username, false); 

WEB.CONFIG

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

摘要

  1. 的窗体身份验证Cookie仍然存在,当用户刚关闭/向下关闭 浏览器,即使它不是一个永久性的Cookie
  2. 如果用户有一个现有的窗体身份验证cookie时,他们加载了 网站Request.IsAuthenticated检查在调试器中的第一次打击时在 上评估为false,然后在第二次打击时为true。前端 页面明显检查这些事情在第一次打击,因为他们 评估为false。

回答

0

想通了。

看起来是一个Firefox问题。 Firefox使用它来允许用户保存他们的标签,但删除了该功能。保存选项卡还保存与选项卡关联的任何会话cookie。

在考虑设置:配置是

browser.showQuitWarning 

我在Firefox 11,所以这应该已经默认被禁用,但是我的配置不知何故被损坏了,我不得不用安全模式重新设置并恢复默认设置。现在可以运行

相关问题