原文:ASP.NET Core Identity 框架 - ASP.NET Core 基础教程 - 简单教程,简单编程

ASP.NET Core Identity 框架

前面我们使用了 N 多个章节,终于是把 ASP.NET Core MVC 经常使用的功能大略的过了一遍。其它的内容,要么更深入,要么更少使用,我们就不再继续了。本章节我们开始学习 ASP.NET Core 中另一个重要的框架:Identity 框架 ,也就是所谓的身份验证框架

ASP.NET Core Identity 框架用于实现表单身份验证, 有许多验证方式可供选择,包括 Windows 身份验证和所有第三方身份验证,如 Google,Microsoft,Facebook 和 GitHub 等

Identity 框架还支持双因素身份验证,也就是所谓的两步验证,当然也支持第三方身份提供商和其它功能

当然了,我们将重点介绍用户可以注册并登录和注销的场景,也就是说, 我们可以使用 Identity 框架 给我们的应用添加注册登陆功能,这样用户可以注册并使用本地密码登录

检查是否安装了 Identity 框架

ASP.NET Core 一般内置了 Identity 框架,我们可以展开依赖项 Microsoft.AspNetCore.App 包,一路查找名为 Microsoft.AspNetCore.Identity 的程序集

如果找到,则说明已经安装了

如果没有找到,请参考前面的章节安装 Microsoft.AspNetCore.Identity

Identity 框架注册与登录

为了使用 Identity 框架实现注册与登录,我们需要创建一个 User 实体,实体类将从 Identity 框架中的基类继承,该基类提供了标准用户属性,如用户名和电子邮件地址

  1. 可以给 User 添加其它属性来保持我们想要的保存的用户信息

  2. 然后,需要把这个 User 类加入到 Identity 框架提供的 UserStore 类中

  3. 最后,使用 UserStore 与数据库进行交互, Identity 框架支持 EF 框架和可以与 EF 框架一起工作的所有数据库

    当然了,我们也可以自定义 UserStore 来支持任何其它数据源

为了正确地使用 EF 框架,我们需要将 User 类插入到 IdentityDb 类,该类使用 EF 框架的 DBContext 完成实际数据库操作

当然了,使用 IdentityDb 类的方式是让现有的 DbContext 类从 IdentityDb 继承,而不是继承 EF 框架的 DBContext

IdentityDbUserStore 类一起用于存储用户信息并验证用户密码

是不是很拗口,算了,以后再回来整理,有种说不清楚到不明白的感觉,但用起来却是非常的简单

Identity 框架最重要的两个组件

Identity 框架提供了很多组件,但我觉得最重要的莫过于两个:SignInManager 和 Identity 中间件

1. SignInManager ( 登录管理器 )

顾名思义,一旦密码验证通过,SignInManager 就允许用户登录

当然了,SignInManager 还可以用于登出一个用户

如果使用表单身份验证,那么登录和注销通过管理 cookie 来实现的。当我们告诉 SignInManager 允许某个用户登录时, SignInManager 会向用户的浏览器返回一个 cookie,浏览器接下来的每个后续请求中都会发送该 cookie,直到 cookie 过期,我们可以使用该 cookie 来识别用户

2. Identity 中间件

Identity 中间件读取 SignInManager发送的 cookie 并识别用户,一般情况下,Identity 中间件都是在排在所有其它中间件之后才运行的

要使用该中间件,我们需要将它配置到我们的应用程序管道中,才能处理 SignInManager 设置的 Cookie

ASP.NET Core Identity 框架 - ASP.NET Core 基础教程 - 简单教程,简单编程的更多相关文章

  1. ASP.NET Core Identity 配置 - ASP.NET Core 基础教程 - 简单教程,简单编程

    原文:ASP.NET Core Identity 配置 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core Identity 配置 上一章节我们简单介绍了下 Id ...

  2. ASP.NET Core 6框架揭秘实例演示[08]:配置的基本编程模式

    .NET的配置支持多样化的数据源,我们可以采用内存的变量.环境变量.命令行参数.以及各种格式的配置文件作为配置的数据来源.在对配置系统进行系统介绍之前,我们通过几个简单的实例演示一下如何将具有不同来源 ...

  3. ASP.NET Core 6框架揭秘实例演示[13]:日志的基本编程模式[上篇]

    <诊断跟踪的几种基本编程方式>介绍了四种常用的诊断日志框架.其实除了微软提供的这些日志框架,还有很多第三方日志框架可供我们选择,比如Log4Net.NLog和Serilog 等.虽然这些框 ...

  4. ASP.NET Core 6框架揭秘实例演示[05]:依赖注入基本编程模式

    毫不夸张地说,整个ASP.NET Core就是建立在依赖注入框架之上的.ASP.NET Core应用在启动时构建管道所需的服务,以及管道处理请求使用到的服务,均来源于依赖注入容器.依赖注入容器不仅为A ...

  5. Net Core Identity 身份验证:注册、登录和注销 (简单示例)

    一.前言 一般我们自己的系统都会用自己设置的一套身份验证授权的代码,这次用net core的identity来完成简单的注册.登录和注销. 二.数据库 首先就是创建上下文,我这里简单的建了Users和 ...

  6. Asp.Net Core Identity 隐私数据保护

    前言 Asp.Net Core Identity 是 Asp.Net Core 的重要组成部分,他为 Asp.Net Core 甚至其他 .Net Core 应用程序提供了一个简单易用且易于扩展的基础 ...

  7. 从零搭建一个IdentityServer——集成Asp.net core Identity

    前面的文章使用Asp.net core 5.0以及IdentityServer4搭建了一个基础的验证服务器,并实现了基于客户端证书的Oauth2.0授权流程,以及通过access token访问被保护 ...

  8. 如何基于asp.net core的Identity框架在mysql上作身份验证处理

    首先了解这个概念,我一开始也是理解和掌握基本的概念,再去做程序的开发.Identity框架是微软自己提供,基于.net core平台,可拓展.轻量 级.面向多个数据库的身份验证框架.IdentityS ...

  9. ASP.NET Core Identity Hands On(2)——注册、登录、Claim

    上一篇文章(ASP.NET Core Identity Hands On(1)--Identity 初次体验)中,我们初识了Identity,并且详细分析了AspNetUsers用户存储表,这篇我们将 ...

随机推荐

  1. Vim技巧之四大模式_插入模式

    Vim技巧之四大模式_插入模式 在插入模式中及时更正错误 插入-普通模式 在插入模式模式以下直接粘贴指定寄存器的内容 插入模式中做运算 用字符编码插入很常使用字符 替换已有的文本 Vim技巧之四大模式 ...

  2. 驱动程序调试方法之printk——printk的原理与直接使用

    1.基本原理 (1)在UBOOT里设置console=ttySAC0或者console=tty1 这里是设置控制终端,tySAC0 表示串口, tty1 表示lcd(2)内核用printk打印 内核就 ...

  3. 虚幻引擎中的数组---TArray: Arrays

    本文章由cartzhang编写,转载请注明出处. 所有权利保留. 文章链接: http://blog.csdn.net/cartzhang/article/details/45367171 作者:ca ...

  4. 【t009】最大矩形面积

    Time Limit: 2 second Memory Limit: 32 MB [问题描述] 在x轴上水平放置着N个矩形,每个矩形都有相同的宽度,但是它们的高度并不相同. 比如,图1包含的矩形的高分 ...

  5. [RxJS] Use RxJS mergeMap to map and merge high order observables

    Like RxJS switchMap() is a shortcut for map() and switch(), we will see in this lesson how mergeMap( ...

  6. java中的subString具体解释及应用

    substring(參数)是java中截取字符串的一个方法 有两种传參方式 一种是public String substring(int beginIndex) 返回一个新的字符串,它是此字符串的一个 ...

  7. 忙里偷闲( ˇˍˇ )闲里偷学【C语言篇】——(9)链表

    我们至少可以通过两种结构来存储数据 数组 1.需要一整块连续的存储空间,内存中可能没有 2.插入元素,删除元素效率极低. 3.查找数据快 链表 1.查找效率低 2.不需要一块连续的内存空间 3.插入删 ...

  8. 开源 RISC-V 架构正在改变 IoT 处理器的游戏规则

    by Paddy McWilliams, Director of Product Marketing, CEVA   在过去的十年里,开源软件已经成为了科技世界最大的催化剂.现在开源的力量带来了自由发 ...

  9. javascript中隐藏显示的样式表属性

    display属性 隐藏不占据位置 visibility属性 隐藏占据位置 //使用display的样式属性 隐藏 显示 //隐藏后不占据文档流位置 function showAddForm(){ v ...

  10. 窗体背景的绘制(Windows窗体每次都会重绘其窗体背景,所以我们可以通过拦截窗体重绘背景的消息(WM_ERASEBKGND),并自定义方法来实现重绘窗体背景)

    核心思想:由于Windows窗体每次都会重绘其窗体背景,所以我们可以通过拦截窗体重绘背景的消息(WM_ERASEBKGND),并自定义方法来实现重绘窗体背景.通过TImage组件也可以实现,但是重写W ...