asp.net-core - 如何在 .NET Core 2.0 中获取登录用户的用户 ID?

标签 asp.net-core asp.net-core-mvc .net-core

我使用 .NET Core 和 MVC 创建了一个 angular 2 应用程序。
我想知道用户的登录ID。如何在 .net core 中获取用户的登录 ID?
这是我的第一个角度应用程序。我使用以下链接开始
https://blogs.msdn.microsoft.com/webdev/2017/02/14/building-single-page-applications-on-asp-net-core-with-javascriptservices/
我想使用 Windows 身份验证,在 Controller 中获取登录 ID。

最佳答案

这实际上取决于您在应用程序中使用的身份验证类型。

考虑到您提到了 Angular,我不确定您使用什么框架进行身份验证,以及您的设置是什么。

为了让您朝着正确的方向前进,您的行动方针是从用户身份中获取相关声明。像这样的东西:

var ident = User.Identity as ClaimsIdentity;
var userID = ident.Claims.FirstOrDefault(c => c.Type == idClaimType)?.Value;

哪里idClaimType是存储您的身份的声明的类型。根据框架,它通常要么是
ClaimTypes.NameIdentifier ( = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier" )
或者JwtClaimTypes.Subject ( = "sub" )

如果你使用的是 Asp.Net Core Identity,你可以在 UserManager 上使用他们的辅助方法。简化对它的访问:

UserManager<ApplicationUser> _userManager;
[…]
var userID = _userManager.GetUserId(User);

关于asp.net-core - 如何在 .NET Core 2.0 中获取登录用户的用户 ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46273107/

相关文章:

asp.net-core - 客户端中的 IdentityServer 4 身份验证事件

asp.net-core - ASP.NET Core DisplayAttribute 本地化

asp.net-core - 在 ASP.NET Core 2.0 中添加全局授权过滤器

c# - 如何在 Visual Studio 中使用 .NET 5(独立进程)调试 Azure Functions?

c# - 如何使用 JsonConverter 在 System.Text.Json.JsonSerializer.Serialize() 中排除属性的序列化

reactjs - 在 .NET Core 2.0 上设置 ReactJS,InvalidOperationException

c# - 为什么发生异常时不从 Mvc 设置 StatusCode

amazon-web-services - AWS Cognito 用户池和 OpenId

jquery - 在asp.net core中ajax发布后Html不刷新

.NETCore WCF 基本HttpBinding