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

在Blazor WASM应用中从Azure AD获取用户用户名、邮箱等数据

解决Blazor获取已认证用户更多信息的方法

在ASP.NET Core的认证体系中,用户的邮箱、用户名等额外信息都存储在**Claims(声明)**集合里,你原来的代码只获取了Identity.Name,要拿到更多信息,直接从Claims中提取即可:

方法一:直接提取指定Claim

修改你的OnInitializedAsync方法,通过ClaimTypes枚举定位对应的声明:

[CascadingParameter]
private Task<AuthenticationState> authenticationStateTask { get; set; }

protected override async Task OnInitializedAsync()
{
    var authState = await authenticationStateTask;
    var user = authState.User;

    // 获取用户唯一标识(通常对应用户名或用户ID,根据认证配置)
    var userId = user.FindFirst(ClaimTypes.NameIdentifier)?.Value;
    // 获取邮箱
    var email = user.FindFirst(ClaimTypes.Email)?.Value;
    // 获取用户昵称/全名
    var fullName = user.FindFirst(ClaimTypes.GivenName)?.Value;
    // 获取姓氏
    var lastName = user.FindFirst(ClaimTypes.Surname)?.Value;

    // 后续逻辑...
}

注意:ClaimTypes的具体取值要和你的认证配置匹配——比如用ASP.NET Core Identity时,默认会包含这些Claim;用JWT认证时,要确保Token生成时已添加对应的字段映射。

方法二:封装扩展方法(提升复用性)

如果多个组件都需要获取用户信息,可以封装一个扩展方法简化代码:

public static class ClaimsPrincipalExtensions
{
    public static string GetUserId(this ClaimsPrincipal user)
    {
        return user.FindFirst(ClaimTypes.NameIdentifier)?.Value;
    }

    public static string GetUserEmail(this ClaimsPrincipal user)
    {
        return user.FindFirst(ClaimTypes.Email)?.Value;
    }

    public static string GetUserName(this ClaimsPrincipal user)
    {
        return user.FindFirst(ClaimTypes.Name)?.Value;
    }
}

之后在组件里直接调用:

protected override async Task OnInitializedAsync()
{
    var authState = await authenticationStateTask;
    var user = authState.User;

    var userId = user.GetUserId();
    var email = user.GetUserEmail();
    var userName = user.GetUserName();
}

关键注意点

  • 确保认证系统已将目标Claim注入到ClaimsPrincipal中:比如用Identity时要确认用户邮箱等字段已正确存储,认证流程包含这些声明;用JWT时要在Token生成阶段添加对应Claims。
  • FindFirst在目标Claim不存在时会返回null,使用时要做好空值判断,避免空引用异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 16:50:27