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

8 篇文章 0 订阅
3 篇文章 0 订阅

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

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

	以下是 ICurrentUser 接口的基本属性:
	
	 1. IsAuthenticated 如果当前用户已登录(已认证),则返回 true. 如果用户尚未登录,则 Id 和 UserName
	 2. 将返回 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))] // 替换旧的AbpUserClaimsPrincipalFactory
	public 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 中文文档

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值