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 Framework 的
DBContext
执行实际数据库工作的类。 - 我们需要将这个
IdentityDb
包含到我们的应用程序中,方法是让我们现有的DataContext
类继承自 IdentityDb,而不是 Entity Framework 的DBContext
。 IdentityDb
和UserStore
一起工作来存储用户信息并验证用户密码,即数据库中的密码。
我们需要了解 ASP.NET Core Identity 框架的两个部分:
SignInManager
SignInManager 是身份框架的两部分之一:
- 顾名思义,一旦我们验证了密码,SignInManager 就可以登录用户。
- 我们还可以使用此管理器注销用户。
- 通过表单身份验证,登录和注销是通过管理 cookie 完成的。
- 当我们告诉 SignInManager 让用户登录时,管理员会向用户的浏览器发出 cookie,浏览器会在每次后续请求时发送该 cookie。它帮助我们识别该用户。
Identity 中间件
它是框架的第二部分:
- 读取 SignInManager 发送的 cookie 并识别用户,这发生在框架的最后一部分,Identity 中间件。
- 我们需要将这个中间件配置到应用程序管道中,以处理 SignInManager 设置的 cookie。在接下来的几章中,我们还将看到该中间件的一些其他特性。