全局应用SetBrowserRequestCredentials



是否有任何方法可以全局应用Microsoft.AspNetCore.Components.WebAssembly.Http扩展方法SetBrowserRequestCredentials(BrowserRequestCredentials.Include(,而不必对每个单独的请求都这样做?

我想避免在每次通话中都这样做:

var request = new HttpRequestMessage(HttpMethod.Get, uri)
.SetBrowserRequestCredentials(BrowserRequestCredentials.Include);
var response = await httpClient.SendAsync(request);

并简单地拥有这样的东西:

var response = await httpClient.GetAsync(uri);

如果你不介意请求不是不可变的,你总是可以创建一个扩展方法:

private static Task<HttpResponseMessage> SendAuthorisedAsync(this HttpClient client, HttpRequestMessage message)
{
return client.SendAsync(message.SetBrowserRequestCredentials(BrowserRequestCredentials.Include));
}

发现这是.NET6中的一个简单解决方案。

builder.Services.AddHttpClient(Options.DefaultName, client =>
{
// setup client
}).AddHttpMessageHandler<CredentialsMessageHandler>();

使用以下中间件:

public class CredentialsMessageHandler : DelegatingHandler
{
protected override Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken cancellationToken)
{
request.SetBrowserRequestCredentials(BrowserRequestCredentials.Include);
return base.SendAsync(request, cancellationToken);
}
}

相关内容

  • 没有找到相关文章

最新更新