Browse Source

Fixed #8240: Username is not visible when logged in with the Blazor UI WASM

pull/8706/head
Halil İbrahim Kalkan 6 years ago
parent
commit
f2bb36a32f
  1. 11
      framework/src/Volo.Abp.AspNetCore.Components.Web/Volo/Abp/AspNetCore/Components/Web/Security/AbpComponentsClaimsCache.cs
  2. 21
      framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Microsoft/AspNetCore/Components/WebAssembly/Hosting/AbpWebAssemblyHostBuilderExtensions.cs

11
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.Security.Claims;
using System.Threading.Tasks; using System.Threading.Tasks;
using Microsoft.AspNetCore.Components.Authorization; using Microsoft.AspNetCore.Components.Authorization;
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.DependencyInjection; using Volo.Abp.DependencyInjection;
namespace Volo.Abp.AspNetCore.Components.Web.Security namespace Volo.Abp.AspNetCore.Components.Web.Security
@ -9,15 +10,19 @@ namespace Volo.Abp.AspNetCore.Components.Web.Security
typeof(AbpComponentsClaimsCache), typeof(AbpComponentsClaimsCache),
typeof(IAsyncInitialize) typeof(IAsyncInitialize)
)] )]
public class AbpComponentsClaimsCache : ISingletonDependency, IAsyncInitialize public class AbpComponentsClaimsCache : IScopedDependency, IAsyncInitialize
{ {
public ClaimsPrincipal Principal { get; private set; } public ClaimsPrincipal Principal { get; private set; }
private readonly AuthenticationStateProvider _authenticationStateProvider; private readonly AuthenticationStateProvider _authenticationStateProvider;
public AbpComponentsClaimsCache(AuthenticationStateProvider authenticationStateProvider) public AbpComponentsClaimsCache(IClientScopeServiceProviderAccessor clientScopeServiceProviderAccessor)
{ {
_authenticationStateProvider = authenticationStateProvider; _authenticationStateProvider = clientScopeServiceProviderAccessor.ServiceProvider.GetRequiredService<AuthenticationStateProvider>();
_authenticationStateProvider.AuthenticationStateChanged += async (task) =>
{
Principal = (await task).User;
};
} }
public virtual async Task InitializeAsync() public virtual async Task InitializeAsync()

21
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(application, nameof(application));
Check.NotNull(serviceProvider, nameof(serviceProvider)); Check.NotNull(serviceProvider, nameof(serviceProvider));
var serviceProviderAccessor = (ComponentsClientScopeServiceProviderAccessor) ((ComponentsClientScopeServiceProviderAccessor) serviceProvider
serviceProvider.GetRequiredService<IClientScopeServiceProviderAccessor>(); .GetRequiredService<IClientScopeServiceProviderAccessor>()).ServiceProvider = serviceProvider;
serviceProviderAccessor.ServiceProvider = serviceProvider;
application.Initialize(serviceProvider); application.Initialize(serviceProvider);
await InitializeModulesAsync(serviceProvider);
using (var scope = serviceProvider.CreateScope()) await SetCurrentLanguageAsync(serviceProvider);
{
await InitializeModulesAsync(scope.ServiceProvider);
await SetCurrentLanguageAsync(scope);
}
} }
private static async Task InitializeModulesAsync(IServiceProvider 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<ICachedApplicationConfigurationClient>(); var configurationClient = serviceProvider.GetRequiredService<ICachedApplicationConfigurationClient>();
var utilsService = scope.ServiceProvider.GetRequiredService<IAbpUtilsService>(); var utilsService = serviceProvider.GetRequiredService<IAbpUtilsService>();
var configuration = configurationClient.Get(); var configuration = await configurationClient.GetAsync();
var cultureName = configuration.Localization?.CurrentCulture?.CultureName; var cultureName = configuration.Localization?.CurrentCulture?.CultureName;
if (!cultureName.IsNullOrEmpty()) if (!cultureName.IsNullOrEmpty())
{ {

Loading…
Cancel
Save