核心概念 Claims : 表示用户信息的一些 键值对 ,如姓名:张三,年龄:25,地址:北京中关村…… ClaimsIdentity : 表示一张/一种身份证明,或者你直接理解为是身份证。它是由多个Cl
核心概念
- Claims : 表示用户信息的一些键值对,如姓名:张三,年龄:25,地址:北京中关村……
- ClaimsIdentity : 表示一张/一种身份证明,或者你直接理解为是身份证。它是由多个Claim组成的。
- ClaimsPrincipal : 一般来讲,一个人会有多重身份,如丈夫、学生、教师……,对应的就会有多个”身份证明“(就是证明身份的证件):结婚证、学生证、教师证,此时就需要有个容器来携带这些证件了,它就是:ClaimsPrincipal,这个词怎么翻译呢?我们先来看一下principal的名词意思:首长,负责人; 主要演员,主角; [法]委托人,当事人; 本金;所以暂时就叫它为:证件当事人,但是总觉得怪怪的,所以就改一下,叫它证件持有者;另外,我认为ClaimsPrincipal这个类的名字应该叫成ClaimsIdentityPrincipal,可能是出于简化的目的,才简写的。
核心接口及中间件
- IAuthenticationHandler : 对于特定方案,为每个请求创建处理认证的处理器。它是一个接口,只有四个方法:AuthenticateAsync(),ChallengeAsync,ForbidAsync,InitializeAsync。如果你需要重写认证相关的东西,则实现这个接口。
- Authentication中间件 : 这个中间件中,写了一个抽象类AuthenticationHandler,初步实现了IAuthenticationHandler,把具体的核心功能交给下游的实现类来完成。
asp.net identity UserSecurityStamp的作用
UserSecurityStamp主要是用来对用户安全相关的信息做一个快照。在使用asp.net identity 的 CreateAsync(TUser user) 创建一个用户的时候,如果开启了SupportsUserSecurityStamp那么就会生成一个UserSecurityStamp的claim添加到用户的claims中去。应用场景,假如说用户修改了密码或者是修改了角色,退出等涉及到用户安全相关的时候,这个时候数据库这个值就会改变。假如要读取浏览器cookie的账号密码做自动登录,可以通过检测cookie的这个值和数据库的这个值进行对比,从而可以使用户重新登录,更新cookie,或者其他一些操作缓存清空等。
未完待续……