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.您可以通过多种方式获得它:
第一个也是最简单的就是提出索赔:
var userId = User.FindFirstValue(ClaimTypes.NameIdentifier);
Run Code Online (Sandbox Code Playgroud)如果您已经有UserManager<TUser>(或想要注入一个)的实例,那么您可以使用该GetUserId()方法:
var userId = _userManager.GetUserId(User);
Run Code Online (Sandbox Code Playgroud)最后,如果您想要旧的方式,那就像添加扩展ClaimsPrincipal并使用上面的第一种方法一样简单:
public static class ClaimsPrincipalExtensions
{
public static string GetUserId(this ClaimsPrincipal principal) =>
principal.FindFirstValue(ClaimTypes.NameIdentifier);
}
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
5156 次 |
| 最近记录: |