ABP vNext 扩展 CurrentUser,自定义Claim声明

2024-02-16 00:50

本文主要是介绍ABP vNext 扩展 CurrentUser,自定义Claim声明,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

ABP内置Users表,我们可以对其字段进行扩展,辅助进行更详细的数据记录

ICurrentUser 是主要的服务,用于获取有关当前活动的用户信息.

	以下是 ICurrentUser 接口的基本属性:1. IsAuthenticated 如果当前用户已登录(已认证),则返回 true. 如果用户尚未登录,则 Id 和 UserName2. 将返回 null. 	Id (Guid?): 当前用户的Id,如果用户未登录,返回 null. 	UserName (string):3. 当前用户的用户名称. 如果用户未登录,返回 null. 	TenantId (Guid?): 当前用户的租户Id. 对于多租户4. 应用程序很有用. 如果当前用户未分配给租户,返回 null. 	Email (string): 当前用户的电子邮件地址.5. 如果当前用户尚未登录或未设置电子邮件地址,返回 null. 	EmailVerified (bool):6. 如果当前用户的电子邮件地址已经过验证,返回 true. 	PhoneNumber (string): 当前用户的电话号码.7. 如果当前用户尚未登录或未设置电话号码,返回 null. 	PhoneNumberVerified (bool):8. 如果当前用户的电话号码已经过验证,返回 true. 	Roles (string[]): 当前用户的角色.9. 返回当前用户角色名称的字符串数组.

如何将扩展字段加入ICurrentUser :

找到Domain类库下的 IdentityServerDataSeedContributor.cs,增加想要扩展的字段别名

在这里插入图片描述
在Application类库创建MyUserClaimsPrincipalFactory工厂
在这里插入图片描述

namespace Creating.Drgs.Hospital.IdentityServer
{[Volo.Abp.DependencyInjection.Dependency(ReplaceServices = true)][ExposeServices(typeof(AbpUserClaimsPrincipalFactory))] // 替换旧的AbpUserClaimsPrincipalFactorypublic class MyUserClaimsPrincipalFactory : AbpUserClaimsPrincipalFactory, IScopedDependency{public MyUserClaimsPrincipalFactory(){}public override async Task<ClaimsPrincipal> CreateAsync(Volo.Abp.Identity.IdentityUser user){//获取当前登录人信息var principal = await base.CreateAsync(user);var identityPrincipal = principal.Identities.First();//扩展信息identityPrincipal.AddClaim(new Claim("doctor",  user.Name));return principal;}}
}
FindClaim: 获取给定名称的声明,如果未找到返回 null
FindClaims: 获取具有给定名称的所有声明(允许具有相同名称的多个声明值).
FindClaimValue: 获取具有给定名称的声明的值,如果未找到返回 null. 它有一个泛型重载将值强制转换为特定类型.
CurrentUser.FindClaimValue("doctor")  //读取扩展信息

ABP Framework 中文文档

这篇关于ABP vNext 扩展 CurrentUser,自定义Claim声明的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/713034

相关文章

springboot自定义注解RateLimiter限流注解技术文档详解

《springboot自定义注解RateLimiter限流注解技术文档详解》文章介绍了限流技术的概念、作用及实现方式,通过SpringAOP拦截方法、缓存存储计数器,结合注解、枚举、异常类等核心组件,... 目录什么是限流系统架构核心组件详解1. 限流注解 (@RateLimiter)2. 限流类型枚举 (

SpringBoot 异常处理/自定义格式校验的问题实例详解

《SpringBoot异常处理/自定义格式校验的问题实例详解》文章探讨SpringBoot中自定义注解校验问题,区分参数级与类级约束触发的异常类型,建议通过@RestControllerAdvice... 目录1. 问题简要描述2. 异常触发1) 参数级别约束2) 类级别约束3. 异常处理1) 字段级别约束

SpringBoot+EasyExcel实现自定义复杂样式导入导出

《SpringBoot+EasyExcel实现自定义复杂样式导入导出》这篇文章主要为大家详细介绍了SpringBoot如何结果EasyExcel实现自定义复杂样式导入导出功能,文中的示例代码讲解详细,... 目录安装处理自定义导出复杂场景1、列不固定,动态列2、动态下拉3、自定义锁定行/列,添加密码4、合并

PostgreSQL的扩展dict_int应用案例解析

《PostgreSQL的扩展dict_int应用案例解析》dict_int扩展为PostgreSQL提供了专业的整数文本处理能力,特别适合需要精确处理数字内容的搜索场景,本文给大家介绍PostgreS... 目录PostgreSQL的扩展dict_int一、扩展概述二、核心功能三、安装与启用四、字典配置方法

Java实现自定义table宽高的示例代码

《Java实现自定义table宽高的示例代码》在桌面应用、管理系统乃至报表工具中,表格(JTable)作为最常用的数据展示组件,不仅承载对数据的增删改查,还需要配合布局与视觉需求,而JavaSwing... 目录一、项目背景详细介绍二、项目需求详细介绍三、相关技术详细介绍四、实现思路详细介绍五、完整实现代码

一文详解Java Stream的sorted自定义排序

《一文详解JavaStream的sorted自定义排序》Javastream中的sorted方法是用于对流中的元素进行排序的方法,它可以接受一个comparator参数,用于指定排序规则,sorte... 目录一、sorted 操作的基础原理二、自定义排序的实现方式1. Comparator 接口的 Lam

如何自定义一个log适配器starter

《如何自定义一个log适配器starter》:本文主要介绍如何自定义一个log适配器starter的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录需求Starter 项目目录结构pom.XML 配置LogInitializer实现MDCInterceptor

Spring组件实例化扩展点之InstantiationAwareBeanPostProcessor使用场景解析

《Spring组件实例化扩展点之InstantiationAwareBeanPostProcessor使用场景解析》InstantiationAwareBeanPostProcessor是Spring... 目录一、什么是InstantiationAwareBeanPostProcessor?二、核心方法解

Druid连接池实现自定义数据库密码加解密功能

《Druid连接池实现自定义数据库密码加解密功能》在现代应用开发中,数据安全是至关重要的,本文将介绍如何在​​Druid​​连接池中实现自定义的数据库密码加解密功能,有需要的小伙伴可以参考一下... 目录1. 环境准备2. 密码加密算法的选择3. 自定义 ​​DruidDataSource​​ 的密码解密3

Python程序的文件头部声明小结

《Python程序的文件头部声明小结》在Python文件的顶部声明编码通常是必须的,尤其是在处理非ASCII字符时,下面就来介绍一下两种头部文件声明,具有一定的参考价值,感兴趣的可以了解一下... 目录一、# coding=utf-8二、#!/usr/bin/env python三、运行Python程序四、