我使用的是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,如下面的屏幕截图所示,我该如何实现?
[HttpGet]
[Authorize]
public async Task<IActionResult> GetUserByToken(){
var ls = User.Claims.AsQueryable();
return Ok(ls);
}
答案 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