我正在尝试获取 ASP.NET Core 2.1 MVC 项目中的用户 ID。
但是,我只能收到电子邮件。我几乎肯定必须有一个 1/2 行的方法来获取它(在 ASP.NET MVC 成员资格中,它只是 varloggingInUserId = 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);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)