如何将ProtectedSessionStorage传递给控制器



我有一个自定义委托处理程序:

public class CustomHandler : DelegatingHandler
{
private readonly TokenProvider tokenProvider;
private readonly ProtectedSessionStorage sessionStorage;
public CustomHandler(
TokenProvider tokenProvider,
ProtectedSessionStorage sessionStorage) : base(new HttpClientHandler())
{
this.tokenProvider = tokenProvider ?? throw new ArgumentNullException(nameof(tokenProvider));
this.sessionStorage = sessionStorage ?? throw new ArgumentNullException(nameof(sessionStorage));
}
protected override async Task<HttpResponseMessage> SendAsync(HttpRequestMessage request, CancellationToken ct)
{
return await base.SendAsync(request, ct).ConfigureAwait(false);
}
}

TokenProvider类存储令牌:

public class TokenProvider
{
public string AccessToken { get; set; }
public string IdToken { get; set; }
public string RefreshToken { get; set; }
}

将这些类注入到剃须刀组件中可以按预期工作。

我在应用程序中添加了一个Api控制器:

[Route("api/[controller]")]
[ApiController]
public class UploadController : ControllerBase
{
private readonly TokenProvider tokenProvider;
private readonly ProtectedSessionStorage sessionStorage;
private readonly ILogger<UploadController> logger;
public UploadController(
TokenProvider tokenProvider,
ProtectedSessionStorage sessionStorage,
ILogger<UploadController> logger)
{
this.tokenProvider = tokenProvider;
this.sessionStorage = sessionStorage;
this.logger = logger;
}
}

然而,当控制器被实例化时,TokenProviderProtectedSessionStorage都为null或空。

是否可以使用DI获取这些类的实例?如果没有,还有其他解决方案吗?

不能在C#类中注入ProtectedSessionStorage。它只能用于Blazor组件。请参阅Microsoft文档,其中说明。。。

"受保护的浏览器存储依赖于ASP。NET核心数据保护,仅Blazor Server应用程序支持">

https://learn.microsoft.com/en-us/aspnet/core/blazor/state-management?view=aspnetcore-6.0&pivots=服务器

相关内容

  • 没有找到相关文章

最新更新