簡體   English   中英

自動cookie值已設置

[英]automatically cookie value is getting set

關於瀏覽器的cookie值,我面臨一個非常奇怪的問題。 我正在使用IE8,我想以這樣的方式管理會話:當任何新用戶嘗試連接我的應用程序時,前一個實例應該自動關閉。

為此,我每次為每個用戶的登錄嘗試和遞增設置cookie。 現在這個場景在IE6中完美運行但在IE8中我面臨的問題是:當用戶第一次登錄時,cookie值設置為ex 1.現在我打開另一個IE8窗口並再次使用cookie值2登錄。現在我去了對於前一個實例,cookie值也更改為2(設置為1)。

因此應用程序的多個實例正在運行,這不應該發生。 此外,當我從1個實例注銷時,另一個實例會自動注銷。 在任何情況下我一次只需要一個實例。 (這種情況在不同的瀏覽器中完美地工作,即FF和IE,即在IE / FF中打開第一個實例,在FF / IE中打開第二個實例)。

原因是IE的兩個實例都將cookie寫入同一位置(cookie只是硬盤上的文件)。 雖然從您的Web應用程序看起來可能是兩個不同的客戶端,但從前端開始,當您從第二個窗口登錄時,cookie將被保存,覆蓋以前的cookie。 現在第一個實例只看到新的cookie並將其愉快地發送到服務器。 如果您只是手動編輯cookie文件,也會發生同樣的情況。 這不是一個錯誤 - 這就是cookie應該如何工作。 請注意,如果您使用不同的計算機,則會顯示您的預期行為

要防止來自同一台計算機和同一應用程序的多個同時會話,您可以使用其他技術。 例如,在客戶端登錄時,哈希登錄時間戳並將此哈希保存到用戶帳戶。 然后將此哈希值發送到每個頁面,並讓瀏覽器在請求新頁面時將此哈希值發送給您。 在服務器上,將從客戶端接收的哈希值與針對用戶帳戶存儲的哈希值進行比較。 如果它們不匹配,那么您在此窗口中注銷應用程序,因為顯然在另一個窗口中已完成另一個登錄。 這將適用於同一應用程序的多個選項卡/窗口以及不同的窗口/計算機。 我過去曾使用過這種技術。 當然,它並非完全萬無一失(沒有),但它適用於我需要的所有情況。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM