前言

在 Identity – Authorize 有介绍过, Identity 的验证核心是 Claims.

在 Identity – Without Identity Framework 也看到了 Claims 是怎样创建的.

这篇看看 Identity 如何帮助我们撞见 Claims 和我们要如何去扩展它.

Identity Role Claims

Identity role claims 的结构是这样的

 

User 有 claims, User 有 roles, Role 有 claims

所以最后 Principal 的 claims 就等于 user's claims + user 所以 role's claims

Custom Permission Claims

假设我们的需求是这样. Role 被授权 "Create Product", "Read Product", "Update Product", "Delete Product"

我们希望做一个 Permission Claims 要怎么搞呢?

做多一个表记入授权的信息 (这只是一个 example 不用纠结它业务的合理性哦)

然后实现一个 UserClaimsPrincipalFactory

Identity 会在创建 principal 的时候调用它.

public class MyUserClaimsPrincipalFactory : UserClaimsPrincipalFactory<IdentityUser>
{
public MyUserClaimsPrincipalFactory(UserManager<IdentityUser> userManager, IOptions<IdentityOptions> optionsAccessor) : base(userManager, optionsAccessor)
{
} protected override async Task<ClaimsIdentity> GenerateClaimsAsync(IdentityUser user)
{
var claims = await base.GenerateClaimsAsync(user);
claims.AddClaim(new Claim ("MyClaim2", "MyClaim2Value"));
return claims;
}
}

然后在 Startup.cs 添加 service scoped 就可以了

builder.Services.AddScoped<IUserClaimsPrincipalFactory<IdentityUser>, MyUserClaimsPrincipalFactory>();

检查

public async Task OnGet()
{
var claims = User.Claims.ToList();
if (User.HasClaim(ClaimTypes.Role, "Super User")) // http://schemas.microsoft.com/ws/2008/06/identity/claims/role
{ }
if (User.HasClaim(c => c.Type == "MyClaim2"))
{ }
}

Identity – Permission Claims & UserClaimsPrincipalFactory的更多相关文章

  1. Cookies, Claims and Authentication in ASP.NET Core(转载)

    Most of the literature concerning the theme of authentication in ASP.NET Core focuses on the use of ...

  2. Web API 基于ASP.NET Identity的Basic Authentication

    今天给大家分享在Web API下,如何利用ASP.NET Identity实现基本认证(Basic Authentication),在博客园子搜索了一圈Web API的基本认证,基本都是做的Forms ...

  3. ASP.NET Core Identity 实战(3)认证过程

    如果你没接触过旧版Asp.Net Mvc中的 Authorize 或者 Cookie登陆,那么你一定会疑惑 认证这个名词,这太正式了,这到底代表这什么? 获取资源之前得先过两道关卡Authentica ...

  4. IdentityServer4结合AspNetCore.Identity实现登录认证踩坑填坑记录

    也可以自定义实现,不使用IdentityServer4.AspNetIdentity这个包,当然还要实现其他接口IResourceOwnerPasswordValidator. IProfileSer ...

  5. Owin+ASP.NET Identity浅析系列(一)用户登录注册

    在今天,读书有时是件“麻烦”事.它需要你付出时间,付出精力,还要付出一份心境.--仅以<Owin+ASP.NET Identity浅析系列>来祭奠那逝去的…… 使用VS2015创建MVC项 ...

  6. MVC6 OWin Microsoft Identity 自定义验证

    1. Startup.cs中修改默认的验证设置 //app.UseIdentity(); app.UseCookieAuthentication(options => { //options.A ...

  7. asp.net core 2.0 web api基于JWT自定义策略授权

    JWT(json web token)是一种基于json的身份验证机制,流程如下: 通过登录,来获取Token,再在之后每次请求的Header中追加Authorization为Token的凭据,服务端 ...

  8. ASP.NET Core 实战:基于 Jwt Token 的权限控制全揭露

    一.前言 在涉及到后端项目的开发中,如何实现对于用户权限的管控是需要我们首先考虑的,在实际开发过程中,我们可能会运用一些已经成熟的解决方案帮助我们实现这一功能,而在 Grapefruit.VuCore ...

  9. Ocelot统一权限验证

    Ocelot作为网关,可以用来作统一验证,接上一篇博客,我们继续 前一篇,我们创建了OcelotGateway网关项目,DemoAAPI项目,DemoBAPI项目,为了验证用户并分发Token,现在还 ...

  10. ASP.NET Core WebAPI中使用JWT Bearer认证和授权

    目录 为什么是 JWT Bearer 什么是 JWT JWT 的优缺点 在 WebAPI 中使用 JWT 认证 刷新 Token 使用授权 简单授权 基于固定角色的授权 基于策略的授权 自定义策略授权 ...

随机推荐

  1. 深度解读GaussDB(for MySQL)与MySQL的COUNT查询并行优化策略

    本文分享自华为云社区<[华为云MySQL技术专栏]GaussDB(for MySQL)与MySQL的COUNT查询并行优化策略>,作者:GaussDB 数据库. 1.背景介绍 统计表的行数 ...

  2. 一张图看懂 SQL 的各种 JOIN 用法(含数据集和韦恩图)

  3. 【Vue2】Axios、Async+Await、解构赋值

    Axios入门使用,Async和Await用法,解构赋值语法 <!DOCTYPE html> <html lang="en"> <head> & ...

  4. 【DataBase】MySQL根据父节点查询下面的所有子节点

    表结构如下: /* Navicat Premium Data Transfer Source Server : 主机 Source Server Type : MySQL Source Server ...

  5. 【SqlServer】Windows-2019 安装

    安装教程参考: https://blog.csdn.net/weixin_43790591/article/details/104149800 数据库SQL Server 2019 + 管理工具SQL ...

  6. 深度学习框架:为啥不同的框架,不同的运行设备(GPU/CPU/NPU),运算出的结果性能会有一定百分数的差别呢

    经常会遇到有人在网上说,TensorFlow的计算结果比pytorch的高上几个百分点,也有人说RTX3090的计算结果没有A100的好,还有人说NPU的计算结果比GPU的高,而且这种说法在业内也是极 ...

  7. 如何在jax框架的jit中快速的实现循环结构 —— Jax框架的jit编译是否可以使用循环结构

    相关: Jax框架的jit编译是否可以使用循环结构,如果使用循环结构需要注意什么 前文中给出了jit下使用python做循环结构的代码,下面再次给出这个代码,这个代码为jupyter-notebook ...

  8. ( Ubuntu环境 ) Vim下一键运行python代码

    使用一个统一的顺手的编辑&编译环境对于写代码是一件事半功倍的事情, 说白了就是有个顺手的写代码的工具很重要,这里要说的工具就是Vim. 假设   Ubuntu 系统中已经安装   Vim  : ...

  9. ChatGPT到底有用没用?—— 个人观点:有用,但不多

    今天接到在大连某高校任职的师弟电话,师弟十分喜欢用ChatGPT,尤其是其文字自动生成的功能,这对于我们这种文字工作者来说简直就是"福音",但是我对这个观点却是有所保留. 当年区块 ...

  10. 一群伪专家讨论“motherland”和“fatherland”,说说个人的观点

    看了一个视频: 中国的文化里在找妈,美国的文化里在找爸!如何真正教育子女? ============================================= ================ ...