Blazorサーバーのクラスにサービス(AuthenticationStateProvider)を挿入するのに苦労しています。かみそりコンポーネントでそれを行う場合、それは非常に簡単です:
@inject AuthenticationStateProvider AuthenticationStateProvider
その後
private async Task LogUsername()
{
var authState = await AuthenticationStateProvider.GetAuthenticationStateAsync();
var user = authState.User;
if (user.Identity.IsAuthenticated)
{
ClientMachineName = $"{user.Identity.Name}";
}
else
{
ClientMachineName = "Unknown";
}
}
ただし、これを行う必要があります。つまり、かみそりコンポーネントではなく、クラスで認証済みユーザーのマシン名を取得します。
私が試した例:
[Inject]
AuthenticationStateProvider AuthenticationStateProvider { get; set; }
public async Task LogUsername()
{
var authState = await AuthenticationStateProvider.GetAuthenticationStateAsync();
var user = authState.User;
if (user.Identity.IsAuthenticated)
{
ClientMachineName = $"{user.Identity.Name}";
}
else
{
ClientMachineName = "Unknown";
}
}
しかし、これはうまくいかないようです。
どんな助けでも大歓迎です。
あなたのstartup.csにいくつかのサービスを追加する場合
services.AddScoped<TokenProvider>();
services.AddTransient<TokenRefreshService>();
services.Add<GraphServiceService>();
あなたはかみそりのページでそれらのタイプによってそれらを注入することができます
@inject TokenProvider _token
@inject TokenRefreshService _tokenrefresh
@inject GraphServiceService _graphservice
これらのサービスクラスは、コンストラクタを通じて注入します。
public GraphServiceClass(AuthenticationStateProvider _AuthenticationStateProvider, TokenProvider _token)
{
AuthenticationStateProvider = _AuthenticationStateProvider;
token = _token;
}
私はこれをお勧めします: ASP.NET Core Blazor依存性注入