C# .NET CORE 3.0 GetTokenAsync授权问题

C# .NET CORE 3.0 GetTokenAsync授权问题,c#,asp.net-core,asp.net-core-3.0,C#,Asp.net Core,Asp.net Core 3.0,我正在向我的WebApI 2控制器发送上述请求。控制器由[Authorize]属性修饰 出于某种原因,我的AUTHORIZE属性的第一行返回null Accept: application/json, text/plain, */* Accept-Encoding: gzip, deflate, br Accept-Language: en-US,en;q=0.9 Authorization: Bearer MyMagicToken Connection: keep-alive Content-

我正在向我的WebApI 2控制器发送上述请求。控制器由
[Authorize]
属性修饰

出于某种原因,我的
AUTHORIZE
属性的第一行返回null

Accept: application/json, text/plain, */*
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9
Authorization: Bearer MyMagicToken
Connection: keep-alive
Content-Length: 103
Content-Type: application/json
Host: localhost:63304
Origin: http://localhost:4200
Referer: http://localhost:4200/fooBar
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-site
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.129 Safari/537.36
如何更改http请求以使
var令牌
等于
MyMagicToken

ApiStartup
中,我有

protected override Task HandleRequirementAsync(AuthorizationHandlerContext 
    context, HasPermissionRequirement requirement)
    {
        var token = this._httpContextAccessor.HttpContext.GetTokenAsync("access_token").Result;

如果您需要读取承载令牌,只需获取
授权
头的值,并将其修剪如下:

 app.UseAuthentication();
 app.UseAuthorization();

问题不在于
GetTokenAsync()
问题在于令牌本身,令牌必须是JWT access格式的令牌
GetTokenAsync()
不通过HTTP头查找具有
授权的头,而只获取其中的值。它通过HTTP头查找
授权
头,并且有一个格式正确的JWT令牌

我认为您的问题是您必须像这样指定身份验证模式

            var authorizationHeader = this._httpContextAccessor.HttpContext.Request.Headers["Authorization"];
            var tokenValue = authorizationHeader.First().Replace("Bearer ", "");

您有请求中间件吗?没有在
授权
代码中,我有
错误中间件
设置。请确保身份验证是正确的done@DanielA.White我通过添加中间件修改了这个问题。这就是你想要的吗?你的解决方案有效,我想用
var token=this.\u httpContextAccessor.HttpContext.GetTokenAsync(“access\u token”).Result。我很好奇为什么上面的代码不起作用。如果没有整个启动配置上下文,很难说:P。我很高兴它能为您工作
[Authorize(AuthenticationSchemes ="kind of yout auth schema")]