Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/262.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# 如何从控制器方法访问令牌数据?_C#_Asp.net Core_Asp.net Core Webapi_Identity_Jwt Auth - Fatal编程技术网

C# 如何从控制器方法访问令牌数据?

C# 如何从控制器方法访问令牌数据?,c#,asp.net-core,asp.net-core-webapi,identity,jwt-auth,C#,Asp.net Core,Asp.net Core Webapi,Identity,Jwt Auth,如何访问从客户端传递到控制器方法的jwt令牌数据?我需要令牌中的userId,以便通过数据存储库层中的其他方法调用访问更多关于用户的数据 我已经能够使用硬编码的令牌字符串来实现这一点,但不能使用从客户端传递的令牌。我将如何编写此控制器方法以将jwt令牌作为输入。。。或者从该控制器方法中访问令牌字符串,从而检索我要查找的数据 我实际上如何将令牌传递到我的控制器方法中 这没有起作用: 或者这个: 所以 Authorize(AuthenticationSchemes = JwtBearerDefa

如何访问从客户端传递到控制器方法的jwt令牌数据?我需要令牌中的userId,以便通过数据存储库层中的其他方法调用访问更多关于用户的数据

我已经能够使用硬编码的令牌字符串来实现这一点,但不能使用从客户端传递的令牌。我将如何编写此控制器方法以将jwt令牌作为输入。。。或者从该控制器方法中访问令牌字符串,从而检索我要查找的数据

我实际上如何将令牌传递到我的控制器方法中

这没有起作用:

或者这个:

所以

Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]
        [HttpPost("moretokenz")]
        public JwtSecurityToken MoreToken(string strToken)
        {
            //Where would strToken come from?
            return new JwtSecurityTokenHandler().ReadJwtToken(strToken);
        }

您只需要在JWT令牌的有效负载中获取声明。 拜访

试试这个:

[HttpGet]
[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]
public async Task<ActionResult<string>> Get()
{
    var token = await HttpContext.GetTokenAsync("access_token");
    return token;
}
[HttpGet]
[授权(AuthenticationSchemes=JwtBearerDefaults.AuthenticationScheme)]

public async Task

当我有字符串访问令牌时,我可以访问数据本身,但我不知道如何首先获取“yourStringAccessToken”。。。我是否希望客户端将字符串值访问令牌传递给我@QBACID313是的,您应该在HTTP请求的头中从客户端发送访问令牌。因此,假设您正在API端点中接收来自客户端的请求,您应该能够访问服务器端的Http上下文对象(HttpContext);在此对象内,您可以访问属性(Request.Headers.HeaderAuthorization)。如果您在客户机上使用的是无记名授权,那么在这个对象中,您有类似于“无记名”的东西。您可以从中获取访问令牌。您在代码中有这样的示例吗?这就是我一直在寻找的东西,但实际上找不到。每个示例基本上都是从已经存在的字符串访问令牌开始的。(在一个例子中,它是从哪里来的?您是如何得到它的。)我只需要用于实际检索令牌的代码。您的StringAccessToken是在哪里初始化的,它是在哪里分配给@QbaCid313的?如果您有特定的代码/问题要分享,我会尽力帮助您。通常,您从身份验证服务器获取访问令牌,并且可以在Http请求中包含该令牌。as:
httpClient.DefaultRequestHeaders.Authorization=new AuthenticationHeaderValue(“承载者”,令牌)你用什么程序制作这些动画?演示事物如何工作的好方法。
var securityTokenHandler = new JwtSecurityTokenHandler();
        if (securityTokenHandler.CanReadToken(yourStringAccessToken))
        {
            var decriptedToken = securityTokenHandler.ReadJwtToken(yourStringAccessToken);
            var claims = decriptedToken.Claims;
            //At this point you can get the claims in the token, in the example I am getting the expiration date claims
            //this step depends of the claims included at the moment of the token is generated
            //and what you are trying to accomplish
            var expiredClaimValue = claims.Where(c => c.Type == "exp").FirstOrDefault().Value;
        }
[HttpGet]
[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]
public async Task<ActionResult<string>> Get()
{
    var token = await HttpContext.GetTokenAsync("access_token");
    return token;
}