了解 ASP.NET Core 身分識別
在此單元中,您將了解身分識別結構。
ASP.NET Core 身分識別架構
ASP.NET Core 身分識別是一種成員資格系統,可將使用者註冊和登入功能新增至 ASP.NET Core Web UI。 成員資格系統會處理驗證和授權的問題。 驗證與您的身分相關。 授權與允許您執行的動作相關。 因此,驗證就是授權的先決條件。
除了建立本機帳戶,身分識別也支援外部登入提供者 (例如 Facebook 和 X)。系統會使用 Cookie 型驗證保留使用者工作階段。 根據預設,Cookie 會在登入時建立,並在登出時損毀。
成員資格資料會使用您選擇的資料存放區與資料存取技術來保存。 預設資料存取技術是一種物件關聯式對應程式 (O/RM),稱為 Entity Framework (EF) Core。 預設的資料存放區是 SQL Server。
EF Core 會抽離與基礎資料庫互動的複雜性。 因此,EF Core 通常可以使用其任何具有身分識別的資料庫提供者。 資料庫提供者適用於 SQL Server、SQLite 與數個其他資料存放區。 身分識別也提供使用您所選擇之資料存取技術的彈性。 Dapper 是一個常用的替代方案。
下圖描述此課程模組中使用的身分識別架構:
在上圖中:
- ASP.NET Core Razor Pages 應用程式代表將在此課程模組中新增身分識別支援的 Web UI。
- [身分識別管理員] 層包含從
Microsoft.AspNetCore.Identity
命名空間使用的類別。 此課程模組中明確使用的這類類別的範例為SignInManager<TUser>
與UserManager<TUser>
。 - [EF Core 身分識別存放區] 層包含來自
Microsoft.AspNetCore.Identity.EntityFrameworkCore
命名空間的類別。 此課程模組中隱含使用的這類類別的範例為UserStore<TUser>
。 - [資料庫提供者] 是一種資料庫專屬的程式庫,可接受來自 EF Core 提供者 (非圖示) 的 SQL 並加以執行。
EF Core 會使用稱為移轉的功能,以累加方式更新資料庫結構描述,使其與應用程式的資料模型保持同步。 套用初始 EF Core 移轉之後,就會建立支援的資料庫資料表。 下圖描述支援資料表的結構描述:
注意
上圖顯示資料庫中的索引鍵和關聯性。 索引鍵為「一」,而無限大 (橫放的 8) 為「多」。 資料庫可以有 1 對 1、1 對多,以及多對多關聯性類型。 索引鍵是唯一的。 此圖顯示這些聯結是如何建立的,以及關聯性。
摘要
在本單元中,您已了解 ASP.NET Core 身分識別架構。 在下一個單元中,您會將預設 ASP.NET Core 身分識別實作新增至現有的應用程式。