From f2bb36a32fa245c09a36f5d6c99a4ea17859a29a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Halil=20=C4=B0brahim=20Kalkan?= Date: Tue, 20 Apr 2021 22:30:36 +0300 Subject: [PATCH] Fixed #8240: Username is not visible when logged in with the Blazor UI WASM --- .../Web/Security/AbpComponentsClaimsCache.cs | 11 +++++++--- .../AbpWebAssemblyHostBuilderExtensions.cs | 21 +++++++------------ 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/Security/AbpComponentsClaimsCache.cs b/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/Security/AbpComponentsClaimsCache.cs index 3e3cf26e5b..281b2f7ded 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/Security/AbpComponentsClaimsCache.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/Security/AbpComponentsClaimsCache.cs @@ -1,6 +1,7 @@ using System.Security.Claims; using System.Threading.Tasks; using Microsoft.AspNetCore.Components.Authorization; +using Microsoft.Extensions.DependencyInjection; using Volo.Abp.DependencyInjection; namespace Volo.Abp.AspNetCore.Components.Web.Security @@ -9,15 +10,19 @@ namespace Volo.Abp.AspNetCore.Components.Web.Security typeof(AbpComponentsClaimsCache), typeof(IAsyncInitialize) )] - public class AbpComponentsClaimsCache : ISingletonDependency, IAsyncInitialize + public class AbpComponentsClaimsCache : IScopedDependency, IAsyncInitialize { public ClaimsPrincipal Principal { get; private set; } private readonly AuthenticationStateProvider _authenticationStateProvider; - public AbpComponentsClaimsCache(AuthenticationStateProvider authenticationStateProvider) + public AbpComponentsClaimsCache(IClientScopeServiceProviderAccessor clientScopeServiceProviderAccessor) { - _authenticationStateProvider = authenticationStateProvider; + _authenticationStateProvider = clientScopeServiceProviderAccessor.ServiceProvider.GetRequiredService(); + _authenticationStateProvider.AuthenticationStateChanged += async (task) => + { + Principal = (await task).User; + }; } public virtual async Task InitializeAsync() diff --git a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Microsoft/AspNetCore/Components/WebAssembly/Hosting/AbpWebAssemblyHostBuilderExtensions.cs b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Microsoft/AspNetCore/Components/WebAssembly/Hosting/AbpWebAssemblyHostBuilderExtensions.cs index c2d433f8f9..f05feacae8 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Microsoft/AspNetCore/Components/WebAssembly/Hosting/AbpWebAssemblyHostBuilderExtensions.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Microsoft/AspNetCore/Components/WebAssembly/Hosting/AbpWebAssemblyHostBuilderExtensions.cs @@ -48,17 +48,12 @@ namespace Microsoft.AspNetCore.Components.WebAssembly.Hosting Check.NotNull(application, nameof(application)); Check.NotNull(serviceProvider, nameof(serviceProvider)); - var serviceProviderAccessor = (ComponentsClientScopeServiceProviderAccessor) - serviceProvider.GetRequiredService(); - serviceProviderAccessor.ServiceProvider = serviceProvider; + ((ComponentsClientScopeServiceProviderAccessor) serviceProvider + .GetRequiredService()).ServiceProvider = serviceProvider; application.Initialize(serviceProvider); - - using (var scope = serviceProvider.CreateScope()) - { - await InitializeModulesAsync(scope.ServiceProvider); - await SetCurrentLanguageAsync(scope); - } + await InitializeModulesAsync(serviceProvider); + await SetCurrentLanguageAsync(serviceProvider); } private static async Task InitializeModulesAsync(IServiceProvider serviceProvider) @@ -69,11 +64,11 @@ namespace Microsoft.AspNetCore.Components.WebAssembly.Hosting } } - private static async Task SetCurrentLanguageAsync(IServiceScope scope) + private static async Task SetCurrentLanguageAsync(IServiceProvider serviceProvider) { - var configurationClient = scope.ServiceProvider.GetRequiredService(); - var utilsService = scope.ServiceProvider.GetRequiredService(); - var configuration = configurationClient.Get(); + var configurationClient = serviceProvider.GetRequiredService(); + var utilsService = serviceProvider.GetRequiredService(); + var configuration = await configurationClient.GetAsync(); var cultureName = configuration.Localization?.CurrentCulture?.CultureName; if (!cultureName.IsNullOrEmpty()) {