• Claims、ClaimsIdentity、ClaimsPrincipal简介


    在 ASP.NET Core 中,仍然沿用了 ASP.NET里面的 Identity 组件库,负责对用户的身份进行认证。ASP.NET Core提倡的是基于声明(Claim)的授权

    基本概念:

    Claim:证件单元,存储信息最小单位

    ClaimsIdentity相当于是一个证件;

    ClaimsPrincipal 则是证件的持有者;

    一个ClaimsPrincipal中可以有多个ClaimsIdentity,而一个ClaimsIdentity中可以有多个Claim。ASP.NET Core的授权模型大概就是这样的一个体系。

    # 1: Claim:证件单元

    Claim claim = new Claim(ClaimTypes.NameIdentifier, user.Code);

    # 2: ClaimsIdentity:证件

    public class ClaimsIdentity:IIdentity
    {
        public ClaimsIdentity(IEnumerable<Claim> claims){}
        
        public virtual string Name { get; }
    public string Label { get; set; } //证件类型 public virtual string AuthenticationType { get; }
      
    //是否是合法的证件。 bool IsAuthenticated { get; }
      
    public virtual void AddClaim(Claim claim);   public virtual void RemoveClaim(Claim claim);   public virtual void FindClaim(Claim claim); }

    # 3: ClaimsPrincipal:证件当事人

    public class ClaimsPrincipal:IPrincipal 
    {
        //把拥有的证件都给当事人
        public ClaimsPrincipal(IEnumerable<ClaimsIdentity> identities){}
        
        //当事人的主身份呢
        public virtual IIdentity Identity { get; }
        
        public virtual IEnumerable<ClaimsIdentity> Identities { get; }
      //在否属于某个角色
        bool IsInRole(string role);
      public virtual void AddIdentity(ClaimsIdentity identity); 
    }

    下面这个图是一个identity登入部分的不完全示意图,虚线圈出来的部分应该可以看懂了吧:


  • 相关阅读:
    132123
    (一)robotframework自动化环境搭建
    python读取xlsx、csv、txt、html文件
    (二)robotframework自动化中遇到的错误及解决思路
    python使用小技巧
    三生零基础大白菜自动重装系统教程
    安装JDK和配置环境变量
    webpack 一套工程代码 管理多个相似项目
    box2dWeb 学习笔记
    简单计时器
  • 原文地址:https://www.cnblogs.com/fanfan-90/p/12066580.html
Copyright © 2020-2023  润新知