他們輸入密碼後,我應該在服務器會話存儲器中保留一個變量,如Session["loggedIn"] = true
,我檢查何時向需要登錄的頁面發出請求,或者是否有更好/更安全的方式,這在傳統上是在ASP.NET中完成的?如何在ASP.NET MVC中保持有關用戶是否在整個頁面中「登錄」的信息?
回答
不,請不要將其保存在會話變量中。事實上,我會爭辯你應該儘量不要使用任何會話。儘量保持HTTP通信儘可能無狀態。
對於ASP.NET MVC認證,你有2個選擇,但最終,兩端向上的工作以同樣的方式:通過寫一個加密身份驗證cookie的瀏覽器登錄成功用戶後
在OP的評論中提到了更新的備選方案:Microsoft.AspNet.Identity。要使用這個,你應該使用OWIN流水線的ASP.NET MVC的新版本(雖然我不知道你是否有)。較舊的替代方案被稱爲Forms Authentication,我相信它可以與除版本6(新vNext/core 1.0之外的任何版本的MVC)一起使用。
當您成功地將這兩個工具之一集成到您的MVC應用程序中時,在用戶登錄後,您的Controller
將具有非空User
IPrincipal
類型的屬性。您可以使用此屬性來確定用戶是否被認證:
// in a controller
bool isThereAUserLoggedIn = this.User != null && this.User.Identity.IsAuthenticated;
如果您使用的是較新的Microsoft.AspNet.Identity,那麼這個IPrincipal User
屬性將被實現爲ClaimsPrincipal
與一個或多個ClaimsIdentity
小號。表單身份驗證不會這樣做,所以如果您想要聲明或社交登錄等,請使用Microsoft.AspNet.Identity。
這是傳統上在ASP.NET中完成的方式,我認爲使用ASP.NET Identity程序包更好更安全。
ASP.NET身份處理各地的用戶帳戶的所有方面,用於在Web應用程序:
- 數據庫用戶,包括角色和更多
- 用戶註冊和管理,如登記,電子郵件驗證,登錄記住我的選擇,忘記了我的密碼操作等等。
- 用戶認證&授權
只是爲了讓事情變得更清晰,認證意味着發出請求的用戶實際上是一個有效的應用程序的用戶和授權意味着用戶必須執行的權力要求的行動。
實際上,當用戶登錄時,Identity會自動保留該信息並使其在User
屬性下的所有控制器和視圖中都可用。所以你隨時知道哪個用戶提出了請求。 Identity還爲每個請求提供用於用戶身份驗證和授權的cookie。
要檢查用戶認證使用User.Identity.IsAuthenticated
在視圖和Authorize
屬性在控制器:
[Authorize]
public ActionResult Create(...){ ... }
上面使用Authorize
屬性將僅允許註冊用戶以請求這一頁。
這也是很常見的擴展應用程序的功能,包括用戶和用戶授權角色。標識創建一個「用戶」表,一個「角色」表以及它們之間的多對多關係。給用戶分配角色後,您可以通過在視圖,並在控制器使用User.Identity.IsInRole("YourRoleName")
批准他們的請求:
[Authorize("YourRoleName")]
public ActionResult Create(...){ ... }
以上使用Authorize
屬性將只允許具有「YourRoleName註冊用戶「請求這個頁面的角色。在任何情況下,如果身份驗證失敗或授權請求將提示登錄頁面。
ASP.NET身份使用簡單,它的工作原理和擴展應用程序的成員身份功能都很容易,通過使用它提供的許多工具並重寫它的類來爲它們提供更具體或更復雜的行爲。
您將在網上找到關於如何使用它或一步一步指南的無限幫助。
- 1. 如何在asp.net mvc中登錄後顯示用戶信息?
- 2. 保持登錄狀態用戶信息
- 3. phonegap登錄頁面,如何保留用戶信息
- 4. 在sencha touch 2中登錄後保持登錄信息
- 5. 如何保持跨多頁頁面的用戶數據asp.net mvc
- 6. 如何在ASP.NET MVC 2的每個頁面上顯示多個用戶信息?
- 7. asp.net中的用戶登錄頁面?
- 8. ASP.NET MVC 5 - 如何保持用戶登錄
- 9. 當用戶登錄時,將用戶保持在同一頁面
- 10. 存儲有關已登錄的ASP.NET MVC用戶的其他信息
- 11. 堅持登錄的用戶信息
- 12. 如何確定登錄頁面上是否有某個用戶已經登錄?
- 13. 如何在wordpress自定義登錄功能中保持所有頁面的用戶登錄?
- 14. 我的應用在登錄後保持重定向到登錄頁面(MVC 5)
- 15. 使用Facebook登錄,如何在所有頁面上保持用戶ID?
- 16. 包含一個php頁面以保護其他頁面內容並顯示用戶在header.php中登錄信息
- 17. ASP.NET MVC 3登錄頁面
- 18. 如果在一個頁面上登錄,從所有頁面註銷用戶mvc
- 19. 在ASP.Net核心Web API中保持登錄用戶的狀態
- 20. ASP.NET MVC 4:如何在成功登錄後從Twitter獲取用戶信息?
- 21. 阻止登錄用戶訪問asp.net中的登錄頁面mvc 5
- 22. asp.net登錄頁面信息存儲信息
- 23. 關於ASP.NET MVC的用戶信息
- 24. asp.net用戶正在登錄,但正在返回登錄頁面
- 25. Grails:如何獲取有關當前登錄用戶的信息?
- 26. 我如何在ASP.NET中保存用戶離開頁面時頁面中的信息?
- 27. 頁面以登錄用戶帖子和信息在wordpress
- 28. 應用在HTTP POST過程中關閉用戶登錄信息
- 29. 保持鏈接到未登錄用戶的信息un rails
- 30. 在所有頁面中保持登錄會話
你應該看看Miscrosoft.Aspnet.Identity。 – CodeNotFound