ASP.NET Core Identity 框架概述

在本章中,我们将简要讨论 ASP.NET Core 的 Identity 框架。ASP.NET Core Identity 框架用于实现表单身份验证。有许多选项可供选择以识别您的用户,包括 Windows 身份验证和所有第三方身份提供商,如 Google、Microsoft、Facebook 和 GitHub 等。

  • Identity 框架是我们将添加到应用程序的另一个依赖项。
  • 该框架让我们可以添加用户可以使用本地密码注册和登录的功能。
  • 该框架还支持双因素身份验证、第三方身份提供者和其他功能。
  • 我们将重点关注用户可以注册、登录和注销的场景。

要做到这一点,我们需要创建一个 User 实体,这个类将继承自 Identity 框架中的基类,而基类为我们提供了标准的用户属性,如用户名和电子邮件地址。

  • 我们可以在这个类中包含任意多的附加属性,以存储有关用户的信息。
  • 我们需要将这个 User 类插入到 Identity 框架提供的 UserStore 类中。
  • UserStore 是我们的代码用来创建用户和验证用户密码的类。
  • 最终,UserStore 将与数据库通信。身份框架支持 Entity Framework 和可以与 Entity Framework 一起工作的所有数据库。
  • 但您可以实现自己的 UserStore 来处理任何数据源。
  • 为了正确使用 Entity Framework ,我们的 User 类还将插入 IdentityDb 类。
  • 这是一个使用 Entity FrameworkDBContext 执行实际数据库工作的类。
  • 我们需要将这个 IdentityDb 包含到我们的应用程序中,方法是让我们现有的 DataContext 类继承自 IdentityDb,而不是 Entity FrameworkDBContext
  • IdentityDbUserStore 一起工作来存储用户信息并验证用户密码,即数据库中的密码。

我们需要了解 ASP.NET Core Identity 框架的两个部分:

SignInManager

SignInManager 是身份框架的两部分之一:

  • 顾名思义,一旦我们验证了密码,SignInManager 就可以登录用户。
  • 我们还可以使用此管理器注销用户。
  • 通过表单身份验证,登录和注销是通过管理 cookie 完成的。
  • 当我们告诉 SignInManager 让用户登录时,管理员会向用户的浏览器发出 cookie,浏览器会在每次后续请求时发送该 cookie。它帮助我们识别该用户。

Identity 中间件

它是框架的第二部分:

  • 读取 SignInManager 发送的 cookie 并识别用户,这发生在框架的最后一部分,Identity 中间件。
  • 我们需要将这个中间件配置到应用程序管道中,以处理 SignInManager 设置的 cookie。在接下来的几章中,我们还将看到该中间件的一些其他特性。