ASP.NET Core - 身份概述


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

  • Identity 框架是我们将添加到应用程序的 project.js 文件中的另一个依赖项。

  • 该框架允许我们添加用户可以使用本地密码注册和登录的功能。

  • 该框架还支持双因素身份验证、第三方身份提供商和其他功能。

  • 我们将重点关注用户可以注册、登录和注销的场景。

为此,我们需要创建一个 User 实体,该类将从 Identity 框架中的基类继承,基类为我们提供标准用户属性,例如用户名和电子邮件地址。

身份概述
  • 我们可以在此类中包含任意数量的附加属性来存储有关用户的信息。

  • 我们需要将这个 User 类插入到 Identity 框架提供的 UserStore 类中。

  • UserStore 是我们的代码用来创建用户和验证用户密码的类。

  • 最终,UserStore 将与数据库通信。身份框架支持实体框架以及所有可与实体框架配合使用的数据库。

  • 但是您可以实现自己的 UserStore 以使用任何数据源。

  • 为了正确使用实体框架,我们的 User 类还将插入到 IdentityDb 类中。

  • 这是一个使用实体框架 DBContext 来完成实际数据库工作的类。

  • 我们需要通过让现有的 DataContext 类继承 IdentityDb 而不是实体框架的 DBContext 来将此 IdentityDb 包含到我们的应用程序中。

  • IdentityDb 和 UserStore 协同工作来存储用户信息并验证用户密码(数据库中的哈希密码)。

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

核心身份框架

登录管理器

这是身份框架的两个部分之一 -

  • 顾名思义,一旦我们验证密码, SignInManager就可以登录用户。

  • 我们还可以使用此管理器来注销用户。

  • 通过表单身份验证,登录和注销是通过管理 cookie 来完成的。

  • 当我们告诉 SignInManager 登录用户时,管理器会向用户的浏览器发出一个 cookie,浏览器将在每个后续请求中发送此 cookie。它可以帮助我们识别该用户。

身份中间件

这是框架的第二部分 -

  • 读取 SignInManager 发送的 cookie 并识别用户,这发生在框架的最后一部分,即身份中间件中。

  • 我们需要将此中间件配置到我们的应用程序管道中,以处理 SignInManager 设置的 cookie。我们还将在接下来的几章中看到这个中间件的一些其他功能。