2009-11-18 87 views
0

是否有可能跨瀏覽器會話(特別是Internet Explorer)使用會話cookie。我想用戶登錄到我的網站,因此得到一個cookie,當用戶打開另一個IE進程有該會話cookie認證用戶。跨瀏覽器進程的會話Cookie

目前正在查找用戶是否打開新窗口或選項卡,因爲它駐留在同一個進程中。

回答

0

一旦瀏覽器關閉,會話cookie就會過期(這是PHP會話cookie的默認行爲)。在Firefox中,通過在您的網站上共享兩個會話來啓動兩個進程;與IE瀏覽器,它不會,可能是因爲「會話」Cookie不在進程之間共享。爲了克服這個問題,你可以在一個cookie中處理自己的會話ID,該cookie沒有0作爲到期時間,而是將來有一個時間戳(假設提前30天)。這樣,Cookie可能在流程之間存活,但您必須依靠自己的ID來處理會話信息。

0

所以你真的想要「在這臺計算機上記住我」的功能?然後,您需要自己創建另一個具有較長使用期限的cookie,例如一年。在這個具有特定名稱和預定義名稱的cookie中,您應該設置一個長時間的,獨一無二的,難以猜測的自動生成的字符串(如哈希)。您將相同的值存儲在數據庫表中作爲PK的服務器端以及用戶標識(如果必要,還將用戶IP作爲可選安全性,並將Cookie TTL用於自動清除)。現在,在每個請求上檢查cookie是否存在,然後使用與DB表中的cookie值相關聯的用戶標識執行自動登錄。

0

在應用程序的Global.asax文件中把這個代碼

Public Function Session_Start() 
{ 
    HttpCookie myCookie = HttpContext.Current.Request.Cookies["ASP.NET_SessionId"]; 
    if(myCookie != null) 
    { 
     myCookie.Expires(3); 
    } 
} 

這將讓您的Cookie活着,因此您的會議將是活着的。 如果這樣做不能解決你的問題,那麼除了使你的會話狀態爲「StateServer」而不是默認的「InProc」,在web.config中

相關問題