我想保存一些數據到會話狀態。當用戶首次通過表單身份驗證登錄時,我需要保存這些數據。我需要此會話狀態變量具有與表單身份驗證票證過期相同的生命週期。有什麼方法可以確保這兩者保持同步?保存數據到會話狀態,並保持與來自身份驗證同步
1
A
回答
3
有什麼方法可以確保這兩個保持同步嗎?
兩者都在web.config中有一個超時值,您可以設置爲相同的值。現在說這是你的問題可能開始的地方。表單身份驗證Cookie可能會有滑動到期設置,而會話不可用。因此,如果您希望兩個超時值匹配,請確保您禁用身份驗證Cookie的此滑動過期。而這僅僅是一個開始。對於會話,您可以選擇存儲它的位置:Off,InProc,StateServer,SqlServer。
當您使用關閉(我個人使用)ASP.NET會話被禁用,你基本上沒有任何會話。
當您將其設置爲InProc(默認值)時,會話將存儲在內存中。除非IIS可以決定在不同情況下回收AppDomain:一段時間不活動,達到某個CPU /內存閾值,......這基本上意味着如果會話存儲在內存中並且AppDomain由Web服務器卸載,鬆散存儲在此會話中的所有內容,而顯然,身份驗證Cookie仍然有效。
StateServer和SQLServer是兩種不同的進程會話存儲模式,其中信息不再存儲在Web服務器的內存中,並且可以在AppDomain被回收的情況下存活。
所以基本上總結一下,以可靠的方式同步ASP.NET會話生命週期和ASP.NET窗體身份驗證cookie生命週期非常困難。我根本沒有使用ASP.NET會話來解決這個問題。
相關問題
- 1. 會話數據未保存在Sinatra簡單身份驗證中
- 2. PHP NTLM身份驗證到Active Directory +保持會話
- 3. 以保持會話狀態數據的方式與認證Cookie保持聯繫
- 4. 爲什麼會話狀態與表單身份驗證狀態不同?
- 5. 什麼是保持身份驗證狀態的最佳方式
- 6. Facebook身份驗證:用戶檢查「保持登錄狀態」
- 7. 身份驗證+保持會話用戶ASP.NET
- 8. 保持會話與FormsAuthentication同步
- 9. ASP.NET MVC Forms身份驗證 - 它如何工作並保持身份驗證?
- 10. 服務器端行爲,同時使用會話或cookie保持用戶身份驗證狀態
- 11. 未保存會話狀態
- 12. Laravel 4.1身份驗證會話數據不會持續請求
- 13. 角度自定義異步驗證器保持待定狀態
- 14. Apache LDAP身份驗證保持HTTP 500
- 15. ASP.NET Membership保持身份驗證問題
- 16. android跨會話保存會話狀態
- 17. Rails身份驗證和授權不保證瀏覽器會話?
- 18. 的.htaccess存根文件保護與PHP會話身份驗證的網站
- 19. CherryPy會話身份驗證?
- 20. ASP.NET身份驗證會話
- 21. 使用會話存儲身份驗證?
- 22. 連接池會保持oracle會話保持活動狀態嗎?
- 23. 身份驗證:JWT使用與會話
- 24. Laravel身份驗證錯誤與會話
- 25. MVC5身份驗證無法保存UseCookieAuthentication
- 26. 保持與前端驗證同步的後端驗證
- 27. 通過數據包嗅探保護經過身份驗證的PHP會話免受會話劫持攻擊
- 28. ASP.NET 2身份驗證用戶之間的會話狀態
- 29. Windows身份驗證會話狀態 - ASP.Net MVC 3
- 30. 讓Watin會話保持活動狀態
只有當你們一直檢查它們時,你才能做到這一點。例如,每次需要讀取會話數據時,檢查是否(SessionData exists && UserIsLogedOn)。 – Aristos 2011-12-30 00:33:14
謝謝。我想要保護的數據是用戶密碼(現有的Web服務,所以我沒有選擇),我認爲會話狀態會更安全,然後在表單身份驗證票證。你不能想到一個更好的地方來存儲它,所以我沒有這些同步問題嗎? – 2011-12-30 00:50:33
會話狀態不安全!會話狀態的cookie可能會被竊取並獲得會話。 – Aristos 2011-12-30 02:51:50