- ASP.NET Core 教程
- ASP.NET Core - 首页
- ASP.NET Core - 概述
- ASP.NET Core - 环境设置
- ASP.NET Core - 新建项目
- ASP.NET Core - 项目布局
- ASP.NET Core - project.json
- ASP.NET Core - 配置
- ASP.NET Core - 中间件
- ASP.NET Core - 异常处理
- ASP.NET Core - 静态文件
- ASP.NET Core - 设置 MVC
- ASP.NET Core - MVC 设计模式
- ASP.NET Core - 路由
- ASP.NET Core - 属性路由
- ASP.NET Core - Action 结果
- ASP.NET Core - 视图
- 设置 Entity Framework
- ASP.NET Core - DbContext
- ASP.NET Core - Razor 布局视图
- ASP.NET Core - Razor 视图启动
- ASP.NET Core - Razor 视图导入
- ASP.NET Core - Razor 标签助手
- ASP.NET Core - Razor 编辑表单
- ASP.NET Core - 身份概述
- ASP.NET Core - Authorize 属性
- 身份验证配置
- ASP.NET Core - 身份迁移
- ASP.NET Core - 用户注册
- ASP.NET Core - 创建用户
- ASP.NET Core - 登录和注销
- ASP.NET Core 有用资源
- ASP.NET Core - 快速指南
- ASP.NET Core - 有用资源
- ASP.NET Core - 讨论
ASP.NET Core - 身份概述
本章将简要讨论 ASP.NET Core Identity 框架。ASP.NET Core Identity 框架用于实现表单身份验证。有多种选择可用于识别用户,包括 Windows 身份验证和所有第三方身份提供商,例如 Google、Microsoft、Facebook 和 GitHub 等。
Identity 框架是我们将添加到项目 project.json 文件中的另一个依赖项。
此框架允许我们添加用户可以使用本地密码注册和登录的功能。
该框架还支持双因素身份验证、第三方身份提供商和其他功能。
我们将重点关注用户可以注册、登录和注销的场景。
为此,我们需要创建一个 User 实体,此类将继承自 Identity 框架中的基类,基类为我们提供了标准的用户属性,例如用户名和电子邮件地址。
我们可以在此类中包含任意数量的附加属性来存储有关用户的信息。
我们需要将此 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 框架的两个组成部分
SignInManager
这是 Identity 框架的两个组成部分之一:
顾名思义,一旦我们验证了密码,SignInManager 就可以登录用户。
我们还可以使用此管理器注销用户。
对于表单身份验证,登录和注销是通过管理 Cookie 来完成的。
当我们告诉 SignInManager 登录用户时,管理器会向用户的浏览器发出 Cookie,浏览器将在每个后续请求中发送此 Cookie。这有助于我们识别该用户。
Identity 中间件
这是框架的第二个组成部分:
读取 SignInManager 发送的 Cookie 并识别用户,这发生在框架的最后一部分,即 Identity 中间件中。
我们需要将此中间件配置到我们的应用程序管道中以处理 SignInManager 设置的 Cookie。我们还将在接下来的几章中看到此中间件的其他一些功能。