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

Yeh*_*lam 5 asp.net-core identityserver4 asp.net-core-identity

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

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

但是,根据我下面的屏幕截图,我无法在任何声明中找到 id,我该如何实现?

在此处输入图片说明

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


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

        }
Run Code Online (Sandbox Code Playgroud)

Nan*_* Yu 6

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

var userID = User.Claims.Where(a => a.Type == ClaimTypes.NameIdentifier).FirstOrDefault().Value;
Run Code Online (Sandbox Code Playgroud)

该 id 值等于由 ASP.NET Identity 创建的表中的IdAspNetUsers