在 AddHttpMessageHandler 方法中访问 Session 个值
Access Session Values in a AddHttpMessageHandler Method
我正在尝试创建一种通用方法来将我的访问令牌添加到我在 Razor 应用程序中的拨出电话中。我按照 documentation 通过 AddHttpMessageHandler
添加了一个 DelegatingHandler
:
services.AddHttpClient("MyName").AddHttpMessageHandler<AddAuthorizationHeaderHandler>();
我的处理程序被正确调用,但我找不到获取包含访问令牌的 session 值的方法(因此我可以将其添加为 header)。
ASP.Net Core 将此值存储在 cookie 中。在我页面的 "code behind" 中,我可以通过 HttpContext
(PageModel
class 的 public 成员)获取值。像这样:
var accessToken = await HttpContext.GetTokenAsync("access_token");
我遇到的问题是我无法在 DelegatingHandler
.
中找到访问此 HttpContext
的方法
如何在我的 DelegatingHandler
中获取 access_token
的 session 值?
将 IHtpContextAccessor
注入委托处理程序
private readonly IHttpContextAccessor accessor;
public AddAuthorizationHeaderHandler(IHttpContextAccessor accessor) {
this.accessor = accessor
}
以便您可以访问上下文
AddAuthorizationHeaderHandler.SendAsync
//...
var accessToken = await accessor.HttpContext.GetTokenAsync("access_token");
//...
确保将其注册到服务集合
services.AddHttpContextAccessor();
我正在尝试创建一种通用方法来将我的访问令牌添加到我在 Razor 应用程序中的拨出电话中。我按照 documentation 通过 AddHttpMessageHandler
添加了一个 DelegatingHandler
:
services.AddHttpClient("MyName").AddHttpMessageHandler<AddAuthorizationHeaderHandler>();
我的处理程序被正确调用,但我找不到获取包含访问令牌的 session 值的方法(因此我可以将其添加为 header)。
ASP.Net Core 将此值存储在 cookie 中。在我页面的 "code behind" 中,我可以通过 HttpContext
(PageModel
class 的 public 成员)获取值。像这样:
var accessToken = await HttpContext.GetTokenAsync("access_token");
我遇到的问题是我无法在 DelegatingHandler
.
HttpContext
的方法
如何在我的 DelegatingHandler
中获取 access_token
的 session 值?
将 IHtpContextAccessor
注入委托处理程序
private readonly IHttpContextAccessor accessor;
public AddAuthorizationHeaderHandler(IHttpContextAccessor accessor) {
this.accessor = accessor
}
以便您可以访问上下文
AddAuthorizationHeaderHandler.SendAsync
//...
var accessToken = await accessor.HttpContext.GetTokenAsync("access_token");
//...
确保将其注册到服务集合
services.AddHttpContextAccessor();