我正在爲我的登錄頁面使用會話,會將userId保存在會話中。如果兩個不同的用戶使用相同的系統和相同的瀏覽器進行登錄,但使用單獨的瀏覽器選項卡,則會將用戶ID的會話值重置爲最後登錄的用戶。爲什麼?會話管理
會話管理
回答
由於會話在選項卡之間共享,因此無法實現。他們需要使用不同的瀏覽器或最後一個用戶會話將刪除以前的用戶會話
會話沒有標籤之間共享。 Cookie之間共享(顯然假設這些標籤指向相同的域)。因此,如果您使用Cookie跟蹤用戶會話,由於這些Cookie被共享,會話也將被共享。但是,如果您更改跟蹤經過驗證的用戶的方式,並且不使用cookie,則會在選項卡之間共享會話。 – 2012-01-11 13:09:08
確實,當我說會話時我假設使用了cookie。設置無cookie的選項以使用web.config上的url工作。但是不安全,所以我甚至沒有想到它。 – H27studio 2012-01-11 13:39:44
如果跟蹤驗證的用戶使用cookie是沒有辦法實現這一點,因爲Cookie的瀏覽器標籤頁之間共享。這與大多數網站一樣。以Gmail爲例:您只需使用一個帳戶登錄,然後您打開一個新標籤頁,並且您自動使用同一用戶登錄,因爲Cookie是共享的。
爲了實現你問你基本上會改變您在跟蹤驗證的用戶的方式。你不應該再使用cookies。
2的可能性浮現在腦海中:
- 使用隱藏字段將包含會話ID
- 每一頁上追加會話ID的所有請求的查詢字符串
有將只有一個sessionID
保存(在餅乾),以供瀏覽器,這將返回到服務器上的後續回發,以識別會話域..
,如果你打開另一個選項卡,然後登錄其他人,然後最新的sessionID
將覆蓋舊..
因此,它不可能有一個相同browser..but不同的登錄信息使用不同的瀏覽器(不另一個實例的相同的瀏覽器)
的Internet Explorer提供它的文件菜單上的「新建會話」功能。這將允許第二個用戶登錄到您的站點,而另一個用戶已經登錄。但是,這將啓動一個新窗口,無法在另一個選項卡中運行單獨的會話。
其他瀏覽器可能會提供類似的功能。
- 1. Perl會話管理
- 2. IBMWorklight會話管理
- 3. iphone會話管理
- 4. 會話管理Jaggery.js
- 5. JSF - 會話管理
- 6. Rails會話管理
- 7. JSF會話管理
- 8. Android會話管理
- 9. WCF會話管理
- 10. Django會話管理
- 11. 管理asp會話
- 12. C#會話管理
- 13. RestKit會話管理
- 14. 會話管理angularjs
- 15. Http會話管理/可選會話管理(Java)
- 16. Google Sitebricks會話管理
- 17. Ruby rails - 會話管理
- 18. 在Go中管理會話
- 19. vb.net中的會話管理
- 20. NHibernate.Burrow會話管理在NH3
- 21. 管理node.js中的會話
- 22. asp.net Nhibernate會話管理
- 23. WPF中的會話管理
- 24. iPhone中的會話管理
- 25. NHibernate Linq會話管理
- 26. NHibernate會話管理w/Ninject
- 27. android中的會話管理
- 28. NHibernate會話管理/模式
- 29. WordPress的會話管理
- 30. Android ksoap2會話cookie管理
它是asp.net或asp-classic,不是兩者。請修復標籤。 – 2012-01-11 20:28:14
在安全會話管理一篇好文章,你會發現非常有用:http://www.linuxforu.com/2011/02/securing-apache-part-6-attacks-session-management/ – Sam 2012-12-29 02:28:09