簡體   English   中英

.NET Core 2.1 中的 HttpContext.GetTokenAsync 無法檢索 JWT

[英]JWT cannot be retrieved by HttpContext.GetTokenAsync in .NET Core 2.1

這個真的讓我摸不着頭腦,因為我可以創建一個 JWT。 我可以添加一個屬性來授權控制器,看看我是否不向標頭添加“授權”“承載(令牌)”,它將返回未經授權的 401。 然而,像獲取令牌字符串以獲取其有效負載聲明這樣簡單的事情是行不通的。

所以這很好用:

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

這不會:

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

我已經更改了簽名,在啟動時連接了 IHTTPContextAccessor,如下所示:

services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();

我可以看到 IHttpContextAccessor 具有值以及授權密鑰。 我可以發誓這曾經在 .NET Core 2.0 中很容易工作,但現在不行了。 我在啟動或程序中缺少一個簡單的連接嗎? 在這一點上,我將只從 Request.Headers 獲取數據。 但這感覺就像一個黑客。

這似乎是 ASP.NET Core 2.1 中的一個已知問題(在即將推出的 2.2 中修復)。 關於我鏈接的 GitHub 問題的建議是從標題中提取值,就像您在問題中所做的那樣。 一旦 2.2 發布並且您能夠升級,您應該能夠恢復使用HttpContext.GetTokenAsync

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM