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

如何在ASP.NET Core及MVC项目视图中获取当前IdentityUser信息

嘿,我来分享几个在ASP.NET Core(包括MVC项目)的视图里获取当前登录Identity用户信息的实用方法,都是日常开发里常用的:

方法1:直接使用视图内置的User对象

每个视图里都默认可以访问User对象(类型是ClaimsPrincipal),它包含了当前登录用户的所有声明(Claim)信息。默认情况下,ASP.NET Core Identity会把用户的核心信息(比如用户名、用户ID、邮箱)放到Claims里,所以你可以直接这样获取:

  • 获取用户名:@User.Identity.Name
  • 获取用户ID:@User.FindFirstValue(ClaimTypes.NameIdentifier)
  • 获取邮箱:@User.FindFirstValue(ClaimTypes.Email)

如果你的自定义ApplicationUser里有其他字段想通过Claim获取,记得在用户创建或登录时把这些字段添加到用户的Claims集合里哦。

方法2:注入UserManager<TUser>到视图

如果需要获取完整的IdentityUser(或自定义的ApplicationUser)实体(比如要访问自定义的昵称、生日等字段),可以直接在视图里注入UserManager:

首先在视图顶部添加注入语句:

@inject UserManager<ApplicationUser> UserManager

(如果用的是默认的IdentityUser,就换成UserManager<IdentityUser>)

然后在视图里异步获取用户实体:

@{
    var currentUser = await UserManager.GetUserAsync(User);
    if (currentUser != null)
    {
        <div>
            <p>用户名:@currentUser.UserName</p>
            <p>邮箱:@currentUser.Email</p>
            <p>自定义昵称:@currentUser.NickName</p>
        </div>
    }
}

这种方式适合需要直接访问用户实体字段的场景,不过要注意确保你的项目已经正确配置了Identity服务(比如在Program.cs里添加了builder.Services.AddIdentity<ApplicationUser, IdentityRole>())。

方法3:通过视图模型(ViewModel)传递用户信息

我个人更推荐这种方式,因为它符合MVC的关注点分离原则——控制器负责获取数据,视图只负责展示:

首先在控制器里获取用户信息并封装到ViewModel:

public async Task<IActionResult> Home()
{
    var currentUser = await _userManager.GetUserAsync(User);
    var homeVm = new HomeViewModel
    {
        UserName = currentUser.UserName,
        Email = currentUser.Email,
        NickName = currentUser.NickName,
        RegisterDate = currentUser.RegisterDate
    };
    return View(homeVm);
}

然后在视图里使用强类型模型:

@model HomeViewModel

<div class="user-info">
    <h4>欢迎回来,@Model.UserName</h4>
    <p>邮箱:@Model.Email</p>
    <p>注册时间:@Model.RegisterDate.ToString("yyyy-MM-dd")</p>
</div>

这种方式让视图更干净,也方便后续的单元测试,避免视图直接依赖UserManager这类服务。

小提醒
  • 如果使用User.FindFirstValue获取Claim,要确认对应的Claim确实存在于用户的Claims中,不然会返回null;
  • 视图里使用await是完全没问题的,ASP.NET Core视图支持异步操作;
  • 如果你用的是Razor Pages,这些方法也同样适用哦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:49:50