我很新的MVC,最近我想從一個空的MVC模板創建一個登錄表單。我聽說過身份類和會話。這兩個有什麼區別?應該同時使用它們還是這些不同類型的東西?在ASP.NET MVC中的會話
回答
這個相對簡單的問題有很多。首先,我認爲你需要了解會議是什麼。
HTTP協議是無狀態的。這意味着每個請求都是它自己的東西,不受之前發生的任何事情的影響。但是,應用程序需要狀態,所以引入了會話的概念。會話是兩個組件的組合,一個是服務器端,另一個是客戶端。在傳統意義上,服務器將存儲一些與會話ID相結合的數據。然後它會發送一個cookie到包含該會話ID的客戶端。客戶端將cookie發回到下一個請求。當服務器看到cookie時,它使用它包含的會話標識來查找它先前存儲的數據。
當談到類似身份驗證的情況時,需要狀態來在請求之間持續進行身份驗證。在像MVC網站這樣的東西中,會話被用於這個目的。在客戶端設置一個cookie,然後由客戶端發送每個請求。服務器讀取cookie,驗證身份驗證並授權用戶。在像Web Api這樣的東西中,會話是不允許的,所以客戶端必須通過每個請求來傳遞身份驗證,通常採用Authorization
標題的形式,其中將包含類似不記名令牌的內容。然而,普通用戶通過Web瀏覽器加載的任何傳統網站都將通過會話持續進行認證。
現在,在ASP.NET代碼中,有一個名爲Session
的靜態動態字典。這利用會話的概念在Web請求之間保持狀態,但不被任何ASP.NET站點可用的身份驗證機制使用。不鼓勵使用Session
,因爲通常將數據存儲在數據庫等更好的地方會更合適。有一些地方使用Session
會很好,但你應該有一個很好的理由這樣做。但是,再次,這與認證/授權沒有任何關係。
最後,ASP.NET網站有許多不同的身份驗證系統可用,有些已棄用。就傳統的用戶身份驗證而言,您擁有ASP.NET Membership和Identity。身份更新且優於ASP.NET Membership(也稱爲FormsAuthentication)。但是,它僅適用於使用MVC 5或Core的網站。
總而言之,如果您今天要創建一個需要身份驗證的新網站,則需要查看ASP.NET身份。有大量的examples and tutorials from Microsoft。您可能需要也可能不需要在應用程序中使用Session
,但應儘可能避免使用它。無論如何,它與認證/授權完全分離,即使在引擎蓋下,它們都使用類似的原則。
- 1. ASP.NET MVC會話
- 2. 在ASP.NET MVC會話超時
- 3. ASP.NET MVC 5會話
- 4. 在asp.net中的會話超時mvc
- 5. 在asp.net中的會話和性能MVC
- 6. MVC ASP.net會話是空的
- 7. 在ASP.NET MVC中啓用會話狀態
- 8. 在asp.net中防止會話超時mvc
- 9. 在ASP.NET MVC中處理會話超時
- 10. 如何在asp.net中處理會話mvc
- 11. 在asp.net中存儲會話數據mvc
- 12. 會話超時絕不會在asp.net mvc
- 13. ASP.NET MVC中的會話超時警告
- 14. ASP.Net中的會話超時問題MVC
- 15. 指定ASP.NET MVC中的只讀會話
- 16. ASP.NET中的會話管理mvc
- 17. ASP.NET MVC中的NHibernate上下文會話
- 18. ASP.NET MVC中會話cookie的持久性
- 19. ASP.NET MVC中的會話過期問題
- 20. ASP.Net中的會話固定MVC
- 21. 會話中的Asp.net mvc類參考
- 22. asp.net mvc會話超時
- 23. ASP.NET MVC會話狀態
- 24. ASP.NET MVC LCID和會話
- 25. ASP.NET MVC會話到期
- 26. ASP.NET MVC 4會話超時
- 27. ASP.Net MVC - TempData會話問題
- 28. Safari會話總是忘記asp.net中的會話變量mvc 3
- 29. Asp.net MVC設置會話變量在javascript
- 30. 會話過期錯誤在asp.net MVC 3
你想使用令牌而不是會話。會議非常過時。看一看OAuth –
@SimonPrice:什麼?沒有任何意義。 '會話'並沒有過時。我不知道這裏的「令牌」是什麼,會話是一個沒有替代或替代的概念。 HTTP是無狀態的。你用會話僞造狀態。就那麼簡單。 –