在ASP.NET Core 2中获取用户ID

Ass*_*Our 4 asp.net-mvc asp.net-core-2.1

我正在尝试在ASP.NET Core 2.1 MVC项目中获取用户ID.

但是,我只能收到电子邮件.我几乎肯定必须有1/2行的方式来获取它(在ASP.NET MVC成员中它只是var loggedInUserId = User.Identity.GetUserId();

我到目前为止尝试过这样:

 var loggedInUserId = User.Identity.ToString();    // Result = Name (E-mail) 
 //  var loggedInUserId = User.Identity.Name;    // Result (E-mail)
Run Code Online (Sandbox Code Playgroud)

现在这就是我需要的

Chr*_*att 14

旧方法User.Identity.GetUserId()不再存在,但id可作为对您委托人的索赔,即User.您可以通过多种方式获得它:

  1. 第一个也是最简单的就是提出索赔:

    var userId = User.FindFirstValue(ClaimTypes.NameIdentifier);
    
    Run Code Online (Sandbox Code Playgroud)
  2. 如果您已经有UserManager<TUser>(或想要注入一个)的实例,那么您可以使用该GetUserId()方法:

    var userId = _userManager.GetUserId(User);
    
    Run Code Online (Sandbox Code Playgroud)
  3. 最后,如果您想要旧的方式,那就像添加扩展ClaimsPrincipal并使用上面的第一种方法一样简单:

    public static class ClaimsPrincipalExtensions
    {
        public static string GetUserId(this ClaimsPrincipal principal) =>
            principal.FindFirstValue(ClaimTypes.NameIdentifier);
    }
    
    Run Code Online (Sandbox Code Playgroud)