Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从jwt令牌获取用户id?_C#_Asp.net Core_Jwt_Azure Active Directory_Httpcontext - Fatal编程技术网

C# 如何从jwt令牌获取用户id?

C# 如何从jwt令牌获取用户id?,c#,asp.net-core,jwt,azure-active-directory,httpcontext,C#,Asp.net Core,Jwt,Azure Active Directory,Httpcontext,Net核心应用程序。通过招摇过市,我正在对我的web api应用程序进行身份验证。我在swagger的每个请求中发送JWT令牌。此jwt令牌包含Azure用户objectid。我想找回它。我试了如下 userId = _httpContextAccessor.HttpContext.User.Claims.First(i => i.Type == ClaimTypes.NameIdentifier).Value; 这不是给我正确的对象标识符。我可以在我的令牌中看到对象标识符,如下所示

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

userId = _httpContextAccessor.HttpContext.User.Claims.First(i => i.Type == ClaimTypes.NameIdentifier).Value;
这不是给我正确的对象标识符。我可以在我的令牌中看到对象标识符,如下所示


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

如果您知道您要查找的索赔的名称,您可以使用它而不是
索赔类型
类中定义的名称

userId = _httpContextAccessor.HttpContext.User.Claims.First(i => i.Type == "CLAIM_NAME").Value;
ClaimTypes
类不是枚举,它只包含一些预定义的常量字符串值


嗯,更改您的索赔类型筛选器以获取其他索赔?谢谢您的回答。所以在我的情况下,我应该传递完整的url?