diff --git a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/ClientProxyExceptionEventHandler.cs b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/ClientProxyExceptionEventHandler.cs index b3614064f9..81f3357bfb 100644 --- a/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/ClientProxyExceptionEventHandler.cs +++ b/framework/src/Volo.Abp.AspNetCore.Components.WebAssembly/Volo/Abp/AspNetCore/Components/WebAssembly/ClientProxyExceptionEventHandler.cs @@ -24,34 +24,46 @@ public class ClientProxyExceptionEventHandler : ILocalEventHandler>(); - - if (!options.Value.IsBlazorWebApp) + case 401: { - var navigationManager = scope.ServiceProvider.GetRequiredService(); - var accessTokenProvider = scope.ServiceProvider.GetRequiredService(); - var authenticationOptions = scope.ServiceProvider.GetRequiredService>(); - var result = await accessTokenProvider.RequestAccessToken(); - if (result.Status != AccessTokenResultStatus.Success) + var options = scope.ServiceProvider.GetRequiredService>(); + + if (!options.Value.IsBlazorWebApp) { - navigationManager.NavigateToLogout(authenticationOptions.Value.LogoutUrl); - return; - } + var navigationManager = scope.ServiceProvider.GetRequiredService(); + var accessTokenProvider = scope.ServiceProvider.GetRequiredService(); + var authenticationOptions = scope.ServiceProvider.GetRequiredService>(); + var result = await accessTokenProvider.RequestAccessToken(); + if (result.Status != AccessTokenResultStatus.Success) + { + navigationManager.NavigateToLogout(authenticationOptions.Value.LogoutUrl); + return; + } - result.TryGetToken(out var token); - if (token != null && DateTimeOffset.Now >= token.Expires.AddMinutes(-5)) + result.TryGetToken(out var token); + if (token != null && DateTimeOffset.Now >= token.Expires.AddMinutes(-5)) + { + navigationManager.NavigateToLogout(authenticationOptions.Value.LogoutUrl); + } + } + else { - navigationManager.NavigateToLogout(authenticationOptions.Value.LogoutUrl); + var jsRuntime = scope.ServiceProvider.GetRequiredService(); + await jsRuntime.InvokeVoidAsync("eval", "setTimeout(function(){location.assign('/')}, 2000)"); } + + break; } - else + case 403: { var jsRuntime = scope.ServiceProvider.GetRequiredService(); await jsRuntime.InvokeVoidAsync("eval", "setTimeout(function(){location.assign('/')}, 2000)"); + + break; } } }