You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从ClaimPrincipal中获取用户的名字和姓氏

从ClaimPrincipal获取姓和名的实现方案

默认ASP.NET身份体系中,名(first name)和姓(last name)有对应的标准Claim类型,不需要依赖自定义的FullName字段,具体实现方式如下:


基础实现代码

首先确保已引用命名空间 using System.Security.Claims;,再调用如下代码:

var identity = (ClaimsIdentity)User.Identity;
// 取名字(first name),对应标准Claim类型ClaimTypes.GivenName
var firstName = identity.FindFirst(ClaimTypes.GivenName)?.Value;
// 取姓氏(last name),对应标准Claim类型ClaimTypes.Surname
var lastName = identity.FindFirst(ClaimTypes.Surname)?.Value;

如果你的业务系统使用自定义的Claim键存储姓名字段,可直接替换FindFirst方法的入参为你自定义的字符串键即可。


无返回值排查方案

如果调用上述代码仍拿不到对应值,可先通过调试代码打印所有Claim信息,确认你当前身份实例中实际存在的Claim键:

var identity = (ClaimsIdentity)User.Identity;
foreach (var claim in identity.Claims)
{
    // 输出所有Claim的类型和值,根据输出结果匹配对应的姓名字段键
    System.Diagnostics.Debug.WriteLine($"Claim类型:{claim.Type},值:{claim.Value}");
}

如果调试结果中确实没有存储姓名和姓氏的Claim,需要去身份认证服务的配置侧,添加对应字段的Claim映射,在用户身份签发时将姓名信息写入Claims集合即可。


内容的提问来源于stack exchange,提问作者jubi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.20 06:54:04