2011-07-14 58 views
2

我好像在我的MVC的Web應用程序,其中用戶正在timeouted出來,如果他們閒置一段時間的問題,大約20 -30分鐘我會說。超時後,他們是否選擇了記住我的複選框,他們已註銷。ASP.NET MVC:會話關閉和迫使登錄即使「記住我」

我使用的是配備了一個新的MVC項目的認證服務,FormsAuthenticationService登錄並設置.ASPAUTH餅乾

public void SignIn(string userName, bool createPersistentCookie) 
{ 
    if (String.IsNullOrWhiteSpace(userName)) throw new ArgumentException("Value cannot be null or empty.", "userName"); 

    FormsAuthentication.SetAuthCookie(userName, createPersistentCookie); 
} 

的cookie設置正確,有到期日設定在未來。我也把我的web.config了以下設置:

<authentication mode="Forms"> 
    <forms loginUrl="~/Account/Login" 
      timeout="2880" 
      slidingExpiration="false" /> 
</authentication> 

<sessionState mode="InProc" cookieless="false" timeout="2881"></sessionState> 

我也設置在IIS中,我能想到的所有設置,可以這樣做,包括空閒超時的應用程序池設置(其中可疑的是20分鐘)至480 minutes

爲什麼我的會話超時,導致用戶需要再次登錄嗎?我如何做到這一點,以便用戶在設置「記住我」cookie時未註銷?

+0

[「記住我」與ASP.NET MVC身份驗證不起作用](http://stackoverflow.com/questions/513949/remember-me -with-ASP淨MVC-認證是 - 不工作) –

+0

你有火狐firecookie插件?您可以使用它來查看哪些cookie正在發送/接收。 – bmosh

+0

Cookie設置將來有效期限。 – ajbeaven

回答

0

記住不能讓你登錄。這只是記住你的下一次登錄時的用戶名。

我很感興趣,爲什麼你被20分鐘後註銷,當你設定的超時但web.config。如果您使用螢火蟲並檢查auth cookie的失效日期,它說了什麼?

一些其他的想法:

  1. 使用持久性身份驗證Cookie與您的登錄()方法
  2. 設置FormsAuthentication SlidingExpiration真正在web.config中
  3. 集編譯調試= 「假」,在web.config中停止AppDomain重新啓動
  4. 檢查服務器上的時間是否正確 - 它使用此與cookie進行比較
  5. 檢查您正在編輯的權限web.config file - I've無意中在Views之前對其進行了更改:)
+0

我認爲這是瀏覽器的責任? – ajbeaven

+1

如果我「記住我」,登錄並關閉瀏覽器,當我重新打開一個需要驗證,我不需要重新登錄的頁面。如果我不'記住我',我需要登錄。這就是我認爲默認的MVC應該做的事情。 – ajbeaven

+0

其實我認爲你在那裏描述的是當你用'FormsAuthentication.SetAuthCookie(userName,true)請求持久化cookie時會發生什麼;' –