Asp.net-Mvc
在 ASP.NET Core 2 中獲取使用者 ID
我正在嘗試在 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. 您可以通過多種方式獲得它:
- 第一個也是最簡單的就是提出聲明:
var userId = User.FindFirstValue(ClaimTypes.NameIdentifier);
- 如果您已經有一個實例
UserManager<TUser>(或想要注入一個),那麼您可以使用以下GetUserId()方法:var userId = _userManager.GetUserId(User);
- 最後,如果您想要返回舊方法,只需添加擴展
ClaimsPrincipal並使用上面的第一種方法即可:public static class ClaimsPrincipalExtensions { public static string GetUserId(this ClaimsPrincipal principal) => principal.FindFirstValue(ClaimTypes.NameIdentifier); }