ASP.NET Core - Identity 身份框架概述
在本章中,我们将简要讨论 ASP.NET Core Identity 框架。 ASP.NET Core 身份框架用于实现表单身份验证。 有许多选项可供选择来识别您的用户,包括 Windows 身份验证和所有第三方身份提供商,如谷歌、微软、Facebook 和 GitHub 等。
Identity 框架是我们将在 project.js 文件中添加到应用程序的另一个依赖项。
此框架允许我们添加用户可以使用本地密码注册和登录的功能。
该框架还支持双因素身份验证、第三方身份提供商等功能。
我们将重点关注用户可以注册、登录和注销的场景。
为此,我们需要创建一个 User 实体,该类将从 Identity 框架中的基类继承,该基类为我们提供标准用户属性,如用户名和电子邮件地址。
![Identity 身份框架概述](https://www.w3ccoo.com/asp.net_core/images/identity_overview.jpg)
我们可以在此类中包含任意数量的附加属性,以存储有关我们用户的信息。
我们需要获取此 User 类并将其插入到 Identity 框架提供的 UserStore 类中。
UserStore 是我们的代码用来创建用户和验证用户密码的类。
最终,UserStore 将与数据库对话。 身份框架支持实体框架和所有可以与实体框架一起工作的数据库。
但是您可以实现自己的 UserStore 以使用任何数据源。
为了正确使用实体框架,我们的用户类也将插入到 IdentityDb 类中。
这是一个使用实体框架 DBContext 来完成实际数据库工作的类。
我们需要通过让现有的 DataContext 类继承自 IdentityDb 而不是实体框架的 DBContext 来将此 IdentityDb 包含到我们的应用程序中。
IdentityDb 和 UserStore 协同工作以存储用户信息并验证用户密码,即数据库中的散列密码。
我们需要了解 ASP.NET Core Identity 框架的两个部分
![Core Identity 身份框架](https://www.w3ccoo.com/asp.net_core/images/core_identity_framework.jpg)
SignInManager
这是 Identity 身份框架的两个部分之一 −
顾名思义,SignInManager 可以在我们验证密码后让用户登录。
我们还可以使用此管理器将用户注销。
使用表单身份验证时,登录和退出是通过管理 cookie 完成的。
当我们告诉 SignInManager 让用户登录时,管理器会向用户的浏览器发送一个 cookie,浏览器将在每个后续请求中发送此 cookie。 它帮助我们识别该用户。
Identity 身份中间件
这是框架的第二部分 −
读取 SignInManager 发送的 cookie 并识别用户,这发生在框架的最后一部分,Identity 身份中间件。
我们需要将这个中间件配置到我们的应用程序管道中,以处理由 SignInManager 设置的 cookie。 在接下来的几章中,我们还将看到这个中间件的一些其他特性。