如何从 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?的主要内容,如果未能解决你的问题,请参考以下文章
如何从 Node.js 中的 jwt 令牌获取 user.id?