自定义类在Blazor服务器端访问AuthenticationStateProvider

时间:2019-11-30 16:38:52

标签: asp.net-core blazor blazor-server-side

是否有关于在自定义类中的Blazor Server Side中访问AuthenticationStateProvider的常规指导?是否应将AuthenticationStateProvider添加为单例服务?还有其他方法可以通过DI获得它吗?我不是在谈论使用AuthorizeViews或通过级联参数。我需要能够在自定义类中而不是控制器,视图等中获取AuthenticationStateProvider.GetAuthenticationStateAsync()。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

感谢艾萨克(Isaac)的信息,但实际上我能够回答自己的问题。我的解决方案是确保我的助手类是作用域的,而不是单例的,以获取authstateprovider的实例。

services.AddScoped<Classes.GlobalHelper>();

然后我可以像调用任何其他DI一样调用authstateprovider,

public async Task<HttpClient> MyHttpClient()
{
    AuthenticationState _authstate = _authStateProv.GetAuthenticationStateAsync().Result;

    HttpClient http = new HttpClient();
    string signedInUserID = _authstate.User.FindFirst(ClaimTypes.NameIdentifier).Value;