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

Blazor Server中通过Identity获取用户唯一标识符的方法

获取Blazor Server Identity用户唯一ID(AspNetUsers.Id)的方法

不需要手动查询数据库表,Identity框架提供了内置方式获取用户ID,以下是两种常见场景的实现:

1. 获取当前登录用户的ID

Blazor Server中可通过AuthenticationStateProvider获取当前用户身份信息,Identity默认会将用户唯一ID(对应AspNetUsers.Id)存入ClaimTypes.NameIdentifier类型的Claim中,直接读取即可:

@inject AuthenticationStateProvider AuthenticationStateProvider

@code {
    private async Task<string> GetCurrentUserId()
    {
        var authState = await AuthenticationStateProvider.GetAuthenticationStateAsync();
        var user = authState.User;
        return user.FindFirstValue(ClaimTypes.NameIdentifier);
    }
}

2. 根据唯一标识获取指定用户的ID

由于你场景中UserName无唯一约束,建议使用具有唯一约束的字段(如邮箱,Identity默认配置中Email是唯一的)定位用户,通过UserManager<TUser>内置方法获取用户实体后,直接访问Id属性:

假设使用默认的IdentityUser用户实体,代码示例如下:

@inject UserManager<IdentityUser> UserManager

@code {
    private async Task<string> GetUserIdByEmail(string email)
    {
        var user = await UserManager.FindByEmailAsync(email);
        return user?.Id; // 找到用户则返回ID,否则返回null
    }
}

如果是自定义用户实体(继承自IdentityUser),用法完全一致,直接访问自定义实体的Id属性即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 04:15:50