这篇英文博文是 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就是驾照中的信息。

最新文章

  1. sass基本用法(转载)
  2. hdu 4039 2011成都赛区网络赛I ***
  3. 【读书笔记】iOS-装箱
  4. 证明ln2=0 和 2=1
  5. Populate A List Item With Record Group In Oracle Forms Using Populate_List And Create_Group_From_Query Command
  6. 基数排序/Go实现
  7. Netty详解
  8. ORM的实现
  9. PHP不使用递归的无限级分类
  10. 腾讯QQ会员技术团队:以手机QQ会员H5加速为例,为你揭开sonic技术内幕
  11. 为Dynamics 365启用部署级的跟踪以及跟踪文件的定期删除
  12. 2019OO第二单元总结
  13. NFS、FTP介绍
  14. GMA Round 1 最大值
  15. JS--我发现,原来你是这样的JS:面向对象编程OOP[1]--(理解对象和对象属性类型)
  16. DDL和DML的区别
  17. 20155318 2016-2017-2 《Java程序设计》第六周学习总结
  18. HashMap(JDK1.9)详解
  19. STM32 输入捕获配置
  20. 英语广播原声听力100篇MP3及听力原文

热门文章

  1. Java之Collections.emptyList()、emptySet()、emptyMap()的作用和好处以及要注意的地方
  2. java 自定义的注解有什么作用
  3. index_levedb.go
  4. VUE+webpack+npm项目中的RSA加解密
  5. 【爆料】-《维多利亚大学毕业证书》Victoria一模一样原件
  6. Hadoop2.41的HA的配置与启动
  7. 第十四章——循环神经网络(Recurrent Neural Networks)(第二部分)
  8. JDBC知识详解
  9. Docker 集群
  10. volitale、synchronized、RetreenLock区别