ASP.NET Core - 身份概述



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

  • Identity 框架是我们将添加到项目 project.json 文件中的另一个依赖项。

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

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

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

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

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

  • 我们需要将此 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 框架的两个组成部分

Core Identity Framework

SignInManager

这是 Identity 框架的两个组成部分之一:

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

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

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

  • 当我们告诉 SignInManager 登录用户时,管理器会向用户的浏览器发出 Cookie,浏览器将在每个后续请求中发送此 Cookie。这有助于我们识别该用户。

Identity 中间件

这是框架的第二个组成部分:

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

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

广告