Asp.net-Mvc

在 ASP.NET Core 2 中獲取使用者 ID

  • July 27, 2019

我正在嘗試在 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)

這就是我現在需要的

舊方法User.Identity.GetUserId()不再存在,但 id 可作為對您的委託人的聲明,即User. 您可以通過多種方式獲得它:

  1. 第一個也是最簡單的就是提出聲明:
var userId = User.FindFirstValue(ClaimTypes.NameIdentifier);
  1. 如果您已經有一個實例UserManager<TUser>(或想要注入一個),那麼您可以使用以下GetUserId()方法:
var userId = _userManager.GetUserId(User);
  1. 最後,如果您想要返回舊方法,只需添加擴展ClaimsPrincipal並使用上面的第一種方法即可:
public static class ClaimsPrincipalExtensions
{
   public static string GetUserId(this ClaimsPrincipal principal) =>
       principal.FindFirstValue(ClaimTypes.NameIdentifier);
}

引用自:https://stackoverflow.com/questions/51765214