mirror of https://github.com/abpframework/abp.git
6 changed files with 90 additions and 31 deletions
@ -0,0 +1,56 @@ |
|||||
|
using System; |
||||
|
using System.Threading.Tasks; |
||||
|
using Microsoft.AspNetCore.Components; |
||||
|
using Microsoft.AspNetCore.Components.Authorization; |
||||
|
using Microsoft.AspNetCore.Components.WebAssembly.Authentication; |
||||
|
using Microsoft.Extensions.Logging; |
||||
|
using Microsoft.Extensions.Options; |
||||
|
using Microsoft.JSInterop; |
||||
|
|
||||
|
namespace Volo.Abp.AspNetCore.Components.WebAssembly; |
||||
|
|
||||
|
public class WebAssemblyAuthenticationStateProvider<TRemoteAuthenticationState, TAccount, TProviderOptions> : RemoteAuthenticationService<TRemoteAuthenticationState, TAccount, TProviderOptions> |
||||
|
where TRemoteAuthenticationState : RemoteAuthenticationState |
||||
|
where TProviderOptions : new() |
||||
|
where TAccount : RemoteUserAccount |
||||
|
{ |
||||
|
protected WebAssemblyCachedApplicationConfigurationClient WebAssemblyCachedApplicationConfigurationClient { get; } |
||||
|
|
||||
|
[Obsolete] |
||||
|
public WebAssemblyAuthenticationStateProvider( |
||||
|
IJSRuntime jsRuntime, |
||||
|
IOptionsSnapshot<RemoteAuthenticationOptions<TProviderOptions>> options, |
||||
|
NavigationManager navigation, |
||||
|
AccountClaimsPrincipalFactory<TAccount> accountClaimsPrincipalFactory, |
||||
|
ILogger<WebAssemblyAuthenticationStateProvider<TRemoteAuthenticationState, TAccount, TProviderOptions>> logger, |
||||
|
WebAssemblyCachedApplicationConfigurationClient webAssemblyCachedApplicationConfigurationClient) |
||||
|
: base(jsRuntime, options, navigation, accountClaimsPrincipalFactory) |
||||
|
{ |
||||
|
WebAssemblyCachedApplicationConfigurationClient = webAssemblyCachedApplicationConfigurationClient; |
||||
|
} |
||||
|
|
||||
|
public WebAssemblyAuthenticationStateProvider( |
||||
|
IJSRuntime jsRuntime, |
||||
|
IOptionsSnapshot<RemoteAuthenticationOptions<TProviderOptions>> options, |
||||
|
NavigationManager navigation, |
||||
|
AccountClaimsPrincipalFactory<TAccount> accountClaimsPrincipalFactory, |
||||
|
ILogger<RemoteAuthenticationService<TRemoteAuthenticationState, TAccount, TProviderOptions>>? logger, |
||||
|
ILogger<WebAssemblyAuthenticationStateProvider<TRemoteAuthenticationState, TAccount, TProviderOptions>> logger1, |
||||
|
WebAssemblyCachedApplicationConfigurationClient webAssemblyCachedApplicationConfigurationClient) |
||||
|
: base(jsRuntime, options, navigation, accountClaimsPrincipalFactory, logger) |
||||
|
{ |
||||
|
WebAssemblyCachedApplicationConfigurationClient = webAssemblyCachedApplicationConfigurationClient; |
||||
|
} |
||||
|
|
||||
|
public async override Task<AuthenticationState> GetAuthenticationStateAsync() |
||||
|
{ |
||||
|
var state = await base.GetAuthenticationStateAsync(); |
||||
|
var applicationConfigurationDto = await WebAssemblyCachedApplicationConfigurationClient.GetAsync(); |
||||
|
if (state.User.Identity != null && state.User.Identity.IsAuthenticated && !applicationConfigurationDto.CurrentUser.IsAuthenticated) |
||||
|
{ |
||||
|
await WebAssemblyCachedApplicationConfigurationClient.InitializeAsync(); |
||||
|
} |
||||
|
|
||||
|
return state; |
||||
|
} |
||||
|
} |
||||
@ -1,23 +0,0 @@ |
|||||
using System.Security.Claims; |
|
||||
using Microsoft.Extensions.DependencyInjection; |
|
||||
using Volo.Abp.AspNetCore.Components.Web.Security; |
|
||||
using Volo.Abp.DependencyInjection; |
|
||||
using Volo.Abp.Security.Claims; |
|
||||
|
|
||||
namespace Volo.Abp.AspNetCore.Components.WebAssembly; |
|
||||
|
|
||||
public class WebAssemblyCurrentPrincipalAccessor : CurrentPrincipalAccessorBase, ITransientDependency |
|
||||
{ |
|
||||
protected AbpComponentsClaimsCache ClaimsCache { get; } |
|
||||
|
|
||||
public WebAssemblyCurrentPrincipalAccessor( |
|
||||
IClientScopeServiceProviderAccessor clientScopeServiceProviderAccessor) |
|
||||
{ |
|
||||
ClaimsCache = clientScopeServiceProviderAccessor.ServiceProvider.GetRequiredService<AbpComponentsClaimsCache>(); |
|
||||
} |
|
||||
|
|
||||
protected override ClaimsPrincipal GetClaimsPrincipal() |
|
||||
{ |
|
||||
return ClaimsCache.Principal; |
|
||||
} |
|
||||
} |
|
||||
Loading…
Reference in new issue