如何从 jwt 令牌中获取用户 ID?

Posted

技术标签:

【中文标题】如何从 jwt 令牌中获取用户 ID?【英文标题】:How to get user id from jwt token? 【发布时间】:2020-05-05 03:53:49 【问题描述】:

网络核心应用程序。通过大摇大摆,我正在对我的 web api 应用程序进行身份验证。我在来自 swagger 的每个请求中发送 JWT 令牌。此 jwt 令牌包含 Azure 用户 objectid。我想找回它。我尝试如下。

userId = _httpContextAccessor.HttpContext.User.Claims.First(i => i.Type == ClaimTypes.NameIdentifier).Value;

这没有给我正确的对象标识符。我可以在我的令牌中看到对象标识符,如下所示。

在下图中有对象标识符,但我无法检索它。有人可以帮我吗?任何帮助,将不胜感激。谢谢

【问题讨论】:

嗯,更改您的声明类型过滤器以获取其他声明? 【参考方案1】:

如果您知道要查找的声明名称,则可以使用它来代替 ClaimTypes 类中定义的名称。

userId = _httpContextAccessor.HttpContext.User.Claims.First(i => i.Type == "CLAIM_NAME").Value;

ClaimTypes 类不是枚举,它只是包含一些预定义的 const 字符串值。

【讨论】:

感谢您的回答。所以在我的情况下,我应该传递完整的网址? schemas.microsoft.com/identity/claims/objectidentifier 我查看了令牌中的所有声明,但名称不是其中任何一个。

以上是关于如何从 jwt 令牌中获取用户 ID?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 jwt 令牌获取用户 ID

如何使用 jwt 令牌获取用户 ID

如何从 Node.js 中的 jwt 令牌获取 user.id?

Laravel,如何从自定义表的 jwt 令牌获取登录用户

如何从 jwt 令牌获取确切的用户以及用户在 laravel 中的确切帖子

如何从.Net Core API 中的身份验证 JWT 令牌中获取身份用户?