C# .NET CORE 3.0 GetTokenAsync授权问题
我正在向我的WebApI 2控制器发送上述请求。控制器由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-
[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")]