这篇英文博文是 Andrew Lock 写的 Introduction to Authentication with ASP.NET Core 。

以下是简单的阅读笔记:


ASP.NET Core 的验证模型是 claims-based authentication 。Claim 是对被验证主体特征的一种表述,比如:登录用户名是…,email是…,用户Id是…,其中的“登录用户名”,“email”,“用户Id”就是ClaimType。

You can think of claims as being a statement about…That statement consists of a name and a value.

对应现实中的事物,比如驾照,驾照中的“身份证号码:xxx”是一个claim,“姓名:xxx”是另一个claim。

一组claims构成了一个identity,具有这些claims的identity就是 ClaimsIdentity ,驾照就是一种ClaimsIdentity,可以把ClaimsIdentity理解为“证件”,驾照是一种证件,护照也是一种证件。

ClaimsIdentity的持有者就是 ClaimsPrincipal ,一个ClaimsPrincipal可以持有多个ClaimsIdentity,就比如一个人既持有驾照,又持有护照。


理解了Claim, ClaimsIdentity, ClaimsPrincipal这三个概念,就能理解生成登录Cookie为什么要用下面的代码?

var claimsIdentity = new ClaimsIdentity(new Claim[] { new Claim(ClaimTypes.Name, loginName) }, "Basic");
var claimsPrincipal = new ClaimsPrincipal(claimsIdentity);
await context.Authentication.SignInAsync(_cookieAuthOptions.AuthenticationScheme, claimsPrincipal);

要用Cookie代表一个通过验证的主体,必须包含Claim, ClaimsIdentity, ClaimsPrincipal这三个信息,以一个持有合法驾照的人做比方,ClaimsPrincipal就是持有证件的人,ClaimsIdentity就是证件,"Basic"就是证件类型(这里假设是驾照),Claim就是驾照中的信息。

NetCore 理解ASP.NET Core验证模型(Claim, ClaimsIdentity, ClaimsPrincipal)不得不读的英文博文相关推荐

  1. asp绑定gridview属性_理解ASP.NET Core中的模型验证

    当MVC执行模型绑定后,为了验证绑定为参数提供的值是否符合预期,还需要进行模型验证. 一.理解模型验证 模型验证是指模型绑定后对Action参数进行验证的过程.它会根据事先定义的规则对参数的值进行验证 ...

  2. 快速理解ASP.NET Core的认证与授权

    ASP.NET Core的认证与授权已经不是什么新鲜事了,微软官方的文档对于如何在ASP.NET Core中实现认证与授权有着非常详细深入的介绍.但有时候在开发过程中,我们也往往会感觉无从下手,或者由 ...

  3. 全面理解 ASP.NET Core 依赖注入

    DI在.NET Core里面被提到了一个非常重要的位置, 这篇文章主要再给大家普及一下关于依赖注入的概念,身边有工作六七年的同事还个东西搞不清楚.另外再介绍一下.NET  Core的DI实现以及对实例 ...

  4. ASP.NET Core MVC 模型绑定用法及原理

    前言 查询了一下关于 MVC 中的模型绑定,大部分都是关于如何使用的,以及模型绑定过程中的一些用法和概念,很少有关于模型绑定的内部机制实现的文章,本文就来讲解一下在 ASP.NET Core MVC ...

  5. core控制器属性注入的用处_理解 ASP.NET Core 依赖注入

    DI在.NET Core里面被提到了一个非常重要的位置,介绍一下.NET  Core的DI实现以及对实例生命周期的管理,在控制台以及Mvc下如何使用DI,以及如何把默认的Service Contain ...

  6. 理解ASP.NET Core中的中间件

    中间件是ASP.NET Core的一个重要特点,ASP.NET Core应用程序之所以能够灵活地处理各种各样的请求,完成都是由于中间件,那么它究竟是怎么一回事呢? 一.理解中间件 ASP.NET Co ...

  7. 深入理解ASP.NET Core依赖注入

    概述 ASP.NET Core可以说是处处皆注入,本文从基础角度理解一下原生DI容器,及介绍下怎么使用并且如何替换官方提供的默认依赖注入容器. 什么是依赖注入 百度百科中对于依赖注入的定义:控制反转( ...

  8. 【netcore】 ASP.NET Core 中间件

    基本概念 中间件是一种装配到应用管道以处理请求和响应的软件. 每个组件: 选择是否将请求传递到管道中的下一个组件. 可在管道中的下一个组件前后执行工作. 请求委托用于生成请求管道. 请求委托处理每个 ...

  9. asp.netcore oracle,Asp.net core 3.1+EF Core2.2.6+Oracle.EntityFrameworkCore2.1.19连接Oracle数据库...

    Asp.net Core 3.1+EF Core2.2.6+Oracle.EntityFrameworkCore2.1.19连接Oracle数据库 1.前言 本次主要采用Asp.net core3.1 ...

最新文章

  1. VBA【遍历每个工作表并将工作表表名赋予B2单元格】
  2. html哪个属性不会脱离文档流,html 在不给高的时候使用float为什么下面的文档会脱离文档流...
  3. 安装配置nginx加载concat模块
  4. 牛客网 【每日一题】5月20日题目 简单瞎搞题
  5. 会计用计算机很快是,40个超实用电脑快捷键,老会计都在用
  6. IDEA中Maven项目中界面右边的Maven Projects窗口找不到不出来
  7. 如何在vue中使用less
  8. Android 中关于属性动画的一些思考,或许能为你解决一定的性能问题
  9. Excel-一元线性回归和多元线性回归(借助数据分析功能和直接计算)
  10. 3dsMax学习笔记01_用VRayMtl材质制作玻璃材质
  11. Arcgis空间分布方向性分析
  12. 我的职业性格测评报告
  13. 融易投3周年庆——欢乐送豪礼
  14. 基于Java代码自动提交Spark任务
  15. 24.STM32的IO口扩展PCF8574
  16. TCL集团2013校园招聘C/C++方向笔试题
  17. HTML\CSS知识点(一)
  18. 我的第一个网站——MISDream(四):网站的发布与云服务器的搭建
  19. python美观代码_为何 Python 代码要写得美观而明确
  20. PHP微信柏拉图性格标签生成器源码

热门文章

  1. Unable to resolve table ‘XXX‘ 的解决方案
  2. eclipse卸载自带的maven
  3. 如何翻译Word文档?分享几种翻译方法
  4. 自考 计算机英语作文,自考英语作文范文三篇
  5. php获取下拉菜单多选值,PHP 下拉菜单多选
  6. 计算机专业应届生简历英语作文,计算机专业英文简历范文(一)
  7. 仅需6200美元,高性价比构建3块2080Ti的强大工作站
  8. Shader 反射光(reflection)
  9. Error in library(nutshell) : 不存在叫‘nutshell’这个名字的程辑包
  10. Python 背后的发展,让我越想越后怕...