2012-03-22 100 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,所以這應該已經默認被禁用,但是我的配置不知何故被損壞了,我不得不用安全模式重新設置並恢復默認設置。現在可以運行

相關問題