c# - .NET Core 2.1 中的 HttpContext.GetTokenAsync 无法检索 JWT

标签 c# asp.net-core jwt access-token asp.net-core-2.1

这个真的让我摸不着头脑,因为我可以创建一个 JWT。我可以添加一个属性来授权 Controller ,看看我是否不向 header 添加“授权”“承载者( token )”,它将返回 401 未授权。然而,像获取 token 字符串以获取其有效负载声明这样简单的事情是行不通的。

所以这很好用:

var token = Request.Headers["Authorization"];

这不是:

var token2 = await HttpContext.GetTokenAsync(JwtBearerDefaults.AuthenticationScheme, "access_token");

我已经更改了签名,像这样在启动时连接了 IHTTPContextAccessor:

services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();

我可以看到 IHttpContextAccessor 有值,还有授权 key 。我可以发誓这曾经在 .NET Core 2.0 中很容易工作,但现在不行了。启动或程序中是否缺少一个简单的连接?此时我将只从 Request.Headers 获取数据。但这感觉就像一个 hack。

最佳答案

这似乎是一个 known issue在 ASP.NET Core 2.1 中(在即将发布的 2.2 中修复)。关于我链接的 GitHub 问题的建议是仅从 header 中提取值,就像您在问题中所做的那样。一旦 2.2 发布并且您可以升级,您应该能够恢复使用 HttpContext.GetTokenAsync

关于c# - .NET Core 2.1 中的 HttpContext.GetTokenAsync 无法检索 JWT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53306437/

相关文章:

c# - MySQL 查询 C# 并保存到 XML

c# - 如何使用工厂方法的返回值在启动类中添加单例

node.js - 如何将 JWT 从客户端传递到我的 API 以进行正确身份验证?

json - 无法解码 token : The token ###

authentication - 是将 JWT 访问 token 存储在应用程序内存中还是同时存储在 httpOnly cookie 中?

c# - Mvvm Light、UWP 和代码隐藏

c# - MVC 2 中 IEnumerable<T> 的排序

c# - Blazor + MongoDb 身份 : Value cannot be null.(参数名称 'source')

c# - ASP.Net Core View 作为弹出框

c# - 在 64 位计算机上使用 C# 和 "BUILD x86"进行注册表访问