从访问令牌 WebApi Asp.net 核心获取用户信息

Get User Info From Access Token WebApi Asp.net Core

我正在使用在 dotnet-core3-preview 中找到的新 ASP.NET Core Identity API 授权,文档可在此处找到 https://docs.microsoft.com/en-us/aspnet/core/security/authentication/identity-api-authorization?view=aspnetcore-3.0

我成功地运行 了典型的登录过程,并且在 Bearer 令牌中设置并发送了令牌。但是现在我有一个 api 端点应该 return 来自数据库的一些用户详细信息,所以我试图从令牌中提取用户 ID 以查询数据库。

但是,根据下面的屏幕截图,我无法在任何声明中找到 ID,我该如何完成此操作?

        [HttpGet]
        [Authorize]
        public async Task<IActionResult> GetUserByToken(){


            var ls = User.Claims.AsQueryable();
            return Ok(ls);

        }

可以在声明中找到用户 ID : http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier :

var userID = User.Claims.Where(a => a.Type == ClaimTypes.NameIdentifier).FirstOrDefault().Value;

该 ID 值等于 AspNetUsers table 中的 Id 列,由 ASP.NET Identity 创建。

我更喜欢使用这个,它更短:

var userId = User.FindFirst(ClaimTypes.NameIdentifier).Value