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

时间:2019-08-02 18:05:32

标签: asp.net-core identityserver4 asp.net-core-identity

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

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

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

enter image description here

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


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

        }

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:1)

我更喜欢使用更短的代码:

(df
 .groupby("key") 
 .agg(",".join)
 .file.str.split(",", expand=True)
 .rename(columns=lambda x: f"doc_{x + 1}")
 .reset_index())

    
     key    doc_1   doc_2   doc_3
0   1234    abc.pdf def.pdf None
1   1235    ghi.pdf jkl.pdf lmn.pdf