- ASP.NET Core 教程
- ASP.NET Core - 首頁
- ASP.NET Core - 概述
- ASP.NET Core - 環境設定
- ASP.NET Core - 新建專案
- ASP.NET Core - 專案佈局
- ASP.NET Core - project.json
- ASP.NET Core - 配置
- ASP.NET Core - 中介軟體
- ASP.NET Core - 異常處理
- ASP.NET Core - 靜態檔案
- ASP.NET Core - 設定 MVC
- ASP.NET Core - MVC 設計模式
- ASP.NET Core - 路由
- ASP.NET Core - 屬性路由
- ASP.NET Core - Action 結果
- ASP.NET Core - 檢視
- 設定 Entity Framework
- ASP.NET Core - DbContext
- ASP.NET Core - Razor 佈局檢視
- ASP.NET Core - Razor 檢視啟動
- ASP.NET Core - Razor 檢視匯入
- ASP.NET Core - Razor 標籤助手
- ASP.NET Core - Razor 編輯表單
- ASP.NET Core - 身份概述
- ASP.NET Core - Authorize 屬性
- 身份驗證配置
- ASP.NET Core - 身份遷移
- ASP.NET Core - 使用者註冊
- ASP.NET Core - 建立使用者
- ASP.NET Core - 登入和登出
- ASP.NET Core 有用資源
- ASP.NET Core - 快速指南
- ASP.NET Core - 有用資源
- ASP.NET Core - 討論
ASP.NET Core - 身份概述
本章將簡要討論 ASP.NET Core Identity 框架。ASP.NET Core Identity 框架用於實現表單身份驗證。有多種選擇可用於識別使用者,包括 Windows 身份驗證和所有第三方身份提供商,例如 Google、Microsoft、Facebook 和 GitHub 等。
Identity 框架是我們將新增到專案 project.json 檔案中的另一個依賴項。
此框架允許我們新增使用者可以使用本地密碼註冊和登入的功能。
該框架還支援雙因素身份驗證、第三方身份提供商和其他功能。
我們將重點關注使用者可以註冊、登入和登出的場景。
為此,我們需要建立一個 User 實體,此類將繼承自 Identity 框架中的基類,基類為我們提供了標準的使用者屬性,例如使用者名稱和電子郵件地址。
我們可以在此類中包含任意數量的附加屬性來儲存有關使用者的資訊。
我們需要將此 User 類插入 Identity 框架提供的 UserStore 類。
UserStore 是我們的程式碼將用來建立使用者和驗證使用者密碼的類。
最終,UserStore 將與資料庫進行通訊。Identity 框架支援 Entity Framework 和所有可以與 Entity Framework 一起使用的資料庫。
但是您可以實現自己的 UserStore 來與任何資料來源一起使用。
為了正確使用 Entity Framework,我們的 User 類還將插入 IdentityDb 類。
這是一個使用 Entity Framework DbContext 執行實際資料庫工作的類。
我們需要透過讓現有的 DataContext 類繼承自 IdentityDb 而不是 Entity Framework 的 DbContext 來將此 IdentityDb 包含到我們的應用程式中。
正是 IdentityDb 和 UserStore 協同工作來儲存使用者資訊並驗證使用者密碼(資料庫中雜湊的密碼)。
我們需要了解 ASP.NET Core Identity 框架的兩個組成部分
SignInManager
這是 Identity 框架的兩個組成部分之一:
顧名思義,一旦我們驗證了密碼,SignInManager 就可以登入使用者。
我們還可以使用此管理器登出使用者。
對於表單身份驗證,登入和登出是透過管理 Cookie 來完成的。
當我們告訴 SignInManager 登入使用者時,管理器會向用戶的瀏覽器發出 Cookie,瀏覽器將在每個後續請求中傳送此 Cookie。這有助於我們識別該使用者。
Identity 中介軟體
這是框架的第二個組成部分:
讀取 SignInManager 傳送的 Cookie 並識別使用者,這發生在框架的最後一部分,即 Identity 中介軟體中。
我們需要將此中介軟體配置到我們的應用程式管道中以處理 SignInManager 設定的 Cookie。我們還將在接下來的幾章中看到此中介軟體的其他一些功能。