我有一個使用FormsAuthentication的ASP.NET應用程序。無論何時重新啓動應用程序或Web服務器,我的身份驗證令牌都無效,我必須重新登錄。出了什麼問題?ASP.NET FormsAuthentication:重新啓動應用程序時必須重新登錄
2
A
回答
1
默認情況下,FormsAuthentication通過讓客戶端存儲數據的加密副本來驗證每個請求上的驗證數據。加密密鑰存儲在Machine.config
中。具體使用的關鍵是<machineKey decryptionKey="YOUR KEY HERE">
。
如果您沒有提供解密密鑰,則會在應用程序啓動時自動生成一個。由於它是隨機生成的,每次重新啓動應用程序時都會有所不同。在驗證階段,FormsAuthentication嘗試解密認證數據並失敗。然後用戶不再登錄。
解決此問題的方法有兩種。
- 在
Machine.config
提供的machineKey會給FormsAuthentication一致的鍵使用,因此驗證將與以前的應用程序運行的加密cookie的成功。 - 在Web.config中使用
<forms protection="None" ... />
將禁用認證數據加密和驗證。這是不安全的,只適合於開發,因爲用戶模仿對方將會是微不足道的。
1
asp.net中的默認會話狀態模式是in-proc(緩存在內存中),除非您另有指定。當應用程序關閉時,內存被清除,進程內會話緩存因此丟失。
@dhasenan如果應用程序跨Web場或雲部署,machinekey配置將只是一個問題。重寫Machinekey元素的機器級配置的想法是確保多臺機器使用完全相同的密鑰。
因此,計算機密鑰不應該,因爲如果在應用級沒有提供一個,在machine.config計算機密鑰將被用來代替一個問題,這是堅持和靜態的,所以它不會會話之間重新生成。
相關問題
- 1. 重新啓動sails.js應用程序時保持用戶登錄
- 2. 帶iBeacon的iOS應用程序必須重新啓動設備
- 3. 鏈接到iTunes必須重新啓動應用程序
- 4. ASP.NET Web應用程序在刪除目錄時重新啓動
- 5. 必須手動重新啓動runserver models.py
- 6. 應用程序何時重新啓動?
- 7. Pwa/Web應用程序在Google登錄後「重新啓動」
- 8. bluemix無法登錄,停止/重新啓動應用程序
- 9. [Android]應用程序重新啓動設備後重新啓動
- 10. 將重新啓動應用程序重新啓動前面
- 11. 當jenkins必須重新啓動?
- 12. Android:應用程序崩潰應用程序重新啓動Facebook登錄
- 13. 在重新啓動應用程序時重新啓動Android活動
- 14. xmonad在登錄時自動啓動應用程序,但不能重新加載
- 15. React Native iOS應用程序在重新啓動時重新啓動
- 16. Asp.Net - 它什麼時候重新啓動應用程序
- 17. 當Oracle 11g存儲過程更新時,是否必須重新啓動IIS WebApp?
- 18. 重新啓動應用程序時的流星自動刷新
- 19. 休眠:必須重新啓動Java應用程序才能實現數據
- 20. 重新啓動時自動啓動應用程序
- 21. 避免重新啓動應用程序
- 22. Sideview重新啓動Android應用程序
- 23. 重新啓動iPhone應用程序
- 24. Netbeans - 應用程序重新啓動
- 25. action_image_capture重新啓動應用程序
- 26. iPhone應用程序重新啓動?
- 27. Android - backbutton - 重新啓動應用程序
- 28. 重新啓動Java Swing應用程序
- 29. TTNavigator重新啓動應用程序內
- 30. django/gunicorn應用程序重新啓動
謝謝你的啓發。 MSDN同意:http://msdn.microsoft.com/en-us/library/ff649308.aspx特別看看**配置來加密表單身份驗證票證** –
basarat