了解 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 身分識別實作新增至現有的應用程式。

檢定您的知識

1.

身分識別的預設資料存放區為何?