这通常与OIDC验证流程中发生的异步事件顺序有关。造成的结果是,认证成功后用户信息未及时更新。可以尝试以下解决方案:
1.在“app.module.ts”中注入“UserInfoEndpointService”,并确保角色配置已配置为true。示例如下:
import { OidcSecurityService, OidcConfigService, OpenIDImplicitFlowConfiguration,
AuthWellKnownEndpoints, AuthModule, AUTH_CONFIG } from 'angular-auth-oidc-client';
import { NgModule } from '@angular/core';
import { HttpClientModule } from '@angular/common/http';
import { AppComponent } from './app.component';
import { RouterModule } from '@angular/router';
import { appRoutes } from './app.routes';
import { ProtectedComponent } from './protected/protected.component';
import { PublicComponent } from './public/public.component';
import { UnauthorizedComponent } from './unauthorized/unauthorized.component';
import { AuthenticationGuard } from './shared/authentication.guard';
import { Configuration } from './app.constants';
import { FormsModule } from '@angular/forms';
import { AuthenticationService } from './shared/authentication.service';
import { UserInfoEndpointService } from './shared/userinfo-endpoint.service';
export function configureAuth(oidcConfigService: OidcConfigService, configuration: Configuration) {
const customConfig: OpenIDImplicitFlowConfiguration = {
stsServer: configuration.stsServer,
redirect_url: configuration.redirect_url,
client_id: 'spa',
response_type: 'id_token token',
scope: 'openid email profile',
post_logout_redirect_uri: configuration.post_logout_redirect_uri,
start_checksession: false,
silent_renew: true,
silent_renew_url: `${configuration.redirect_url}/silent-renew.html`,
post_login_route: '/home',
forbidden_route: '/forbidden',
unauthorized_route: '/unauthorized',
log_console_warning_active: true,
log_console_debug_active: false,
max_id_token_iat_offset_allowed_in_seconds: 10,
history_cleanup_off: true
};
return () => {
oidcConfigService.withConfig(customConfig);
}
}
@NgModule({
declarations: [
AppComponent,
ProtectedComponent,
PublicComponent,
Unauthorized