2010-06-23 138 views
10

關閉瀏覽器後,cookie需要保留的確切步驟是什麼?目前,我有:瀏覽器關閉後驗證/會話cookie刪除

  1. createPersistentCookie設置爲trueLoggedIn事件。
  2. 指定的MachineKey。
  3. 表單滑動到期設置爲true

只要瀏覽器處於打開狀態,用戶就會保持登錄狀態,但只要關閉了,並且多久都無關緊要,用戶需要重新登錄。我錯過了什麼?

編輯: 我所經歷的文章所指出的marapet(見下面的評論),它讓我感興趣的票是否確實有IsPersistent標誌,它的作用。解密票看起來像這樣: System.Web.Security.FormsAuthentication.Decrypt(Request.Cookies[System.Web.Security.FormsAuthentication.FormsCookieName].Value) {System.Web.Security.FormsAuthenticationTicket} CookiePath: "/" Expiration: {19/08/2010 17:27:14} Expired: false IsPersistent: true IssueDate: {19/07/2010 17:27:14} Name: "alex" UserData: "" Version: 2 所有的細節都是正確的,並對應於我在LoggedIn事件中設置的那些。我可以直接從cookie中檢索更多的cookie值,與此相同。然而,一旦我關閉瀏覽器,cookie就會丟失。

但是,我注意到,但是,攜帶該票的cookie由於某種原因而重置了日期。首先,我無法覆蓋web.config中的設置,因此在LoggedIn事件結束時,Expires屬性在發佈日期後爲4000分鐘,而不是以編程方式設置的月份。然後在頁面加載後,我使用FormsAuthentication.FormsCookieName檢索到的cookie具有01/01/0001的Expires屬性。我想也許這是問題所在?任何想法將不勝感激。

編輯#2: 我改變這兩個標題和標籤,包括會議,因爲它原來是相關的問題/解決方案

回答

10

所以我最終找到了解決方案。事實證明,這不是認證cookie本身的問題(它被正確保留,或者如果處理程序沒有刪除它,而是錯誤地認爲用戶沒有根據失蹤的會議)。問題在於會話cookie丟失或未正確識別。因此,修復了登錄過程中手動添加一個會話cookie,像這樣:

HttpCookie authCookie = new HttpCookie("ASP.NET_SessionId", Session.SessionID); 
authCookie.Domain = ".mydomain.com"; 
authCookie.Expires = DateTime.Now.AddMonths(1); 
Response.Cookies.Add(authCookie); 

現在,當瀏覽器再次打開會話被正確識別和用戶會話恢復。

+2

這也解決了我的問題。如果您離開域,則客戶端瀏覽器將其默認爲當前域。 – jhappoldt 2011-01-05 21:21:42

0

一個持久的窗體身份驗證cookie不應該被丟棄時,瀏覽器關閉。它對於web.config中定義的超時值保持有效。

但是,有些瀏覽器可以配置爲在會話結束時放棄所有cookie - 您可能需要檢查瀏覽器的設置(FireFox:工具 - 選項 - 隱私)。

+0

這不是瀏覽器特定的事情,它發生在所有瀏覽器中。它可能更多與設置有關,我一定忽略了某個地方。超時也是無關緊要的,因爲如果我在大約10秒內關閉並打開瀏覽器,cookie就不存在了。 – Shagglez 2010-06-24 08:17:15

+0

當LoggedIn事件觸發時,cookie已經創建。另外,請確保在web.config中指定了超時值。我通常自己創建身份驗證cookie。有一篇文章使用LoggingIn事件來阻止自動創建cookie:http://blogs.msdn。com/b/swathis/archive/2009/04/03/form-authentication-issue-remember-me-does-not-work-user-profile-roles-are-not-saved.aspx – marapet 2010-06-24 13:09:13

+0

感謝評論,我翻閱了文章並做了一些調查。在我的情況下,身份驗證票證的IsPersistent屬性在所有頁面中都設置爲true(並且我手動將期限更改爲將來很遠),所以它不會像設置不正確。只要我關閉瀏覽器,它就消失了。 – Shagglez 2010-07-19 15:57:42

相關問題