2013-01-01 65 views
0

我使用下面的代碼自定義不同的日期「記住我」執行力度:Cookie的到期日期時間,並在客戶端和服務器

 FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1, member.UserName, DateTime.Now, DateTime.Now.AddHours(24), true, dataString); 
     string encTicket = FormsAuthentication.Encrypt(ticket); 
     HttpCookie faCookie = new HttpCookie(FormsAuthentication.FormsCookieName, encTicket); 
     faCookie.Expires = ticket.Expiration; 
     HttpContext.Current.Response.Cookies.Add(faCookie); 

但有些用戶無法登陸(出現登錄頁面,即使登錄後)。
看起來問題是由於客戶端的日期與服務器的日期不同而造成的。 那麼,什麼是「記住我」實施的最佳和正確的解決方案。
爲了解決這個問題,我必須刪除此行:

faCookie.Expires = ticket.Expiration; 

刪除這條線後,當用戶關閉瀏覽器,他必須登錄(cookie不會繼續存在)。 解決方案是什麼?

回答

0

你可以做的是得到客戶日期/時間,並使用它的Cookie,而不是服務器時間。

有一個很好的答案here顯示你一個很好的方法來做到這一點;基本上用客戶日期/時間填充隱藏字段並在回發中獲取。

你可以在你的主頁上有這個隱藏字段,這樣客戶端的日期/時間總是可用的。不需要僅僅在登錄屏幕上。

相關問題