У меня есть сайт, который использует IS4, а внешний интерфейс - Angular 7. У меня есть библиотека oidc-client для обработки всех аутентификаций пользователей и т. Д., И все работает отлично.Впервые я вижу эту проблему, хотя.Я могу войти в систему и взаимодействовать просто отлично, с моими разрешениями, ролями и все это хорошо.Иногда я получаю странную ошибку после некоторого бездействия, поэтому, когда я пытаюсь выполнить безопасную операцию, я сразу получаю сообщение об ошибке, даже не затрагивая мой API.Если я обновлю страницу и выполню действие, оно будет работать нормально.
Я реализовал silent renew callback
в своем компоненте так:
@Component({
selector: 'app-silent-renew-callback',
templateUrl: 'silent-renew-callback.component.html'
})
export class SilentRenewCallbackComponent implements OnInit {
constructor(private authService: AuthService) { }
ngOnInit() {
this.authService.signingSilentCallback();
}
}
, который затем отправляется на authServicecode:
signingSilentCallback(): Promise<void> {
return this.manager.signinSilentCallback()
.catch(e => {
console.log(e);
});
}
Моя конфигурация событий службы аутентификации выглядит следующим образом:
@Injectable()
export class AuthService {
private manager: UserManager;
private user: User = null;
constructor() {
if (!environment.production) {
Log.logger = console;
}
this.manager = new UserManager(getClientSettings());
this.manager.getUser()
.then(user => {
this.user = user;
});
this.manager.events.addUserSignedOut(() => {
this.signOut();
});
this.manager.events.addAccessTokenExpired(() => {
this.signOut();
});
}
}
export function getClientSettings(): UserManagerSettings {
return {
authority: environment.authorityUrl,
client_id: 'my_client_id',
redirect_uri: `${environment.baseUrl}/auth-callback`,
post_logout_redirect_uri: environment.baseUrl,
response_type: 'id_token token',
scope: 'openid profile my_api',
filterProtocolClaims: true,
loadUserInfo: true,
automaticSilentRenew: true,
silent_redirect_uri: `${environment.baseUrl}/silent-renew-callback`,
};
}
Дело в том, что при чтении некоторых постов должно быть событие, подключенное при обновлениипользователь:
this.manager.events.addUserLoaded(_ => {
this.manager.getUser()
.then(user => {
this.user = user;
});
});
Мой вопрос заключается в том, является ли это обязательным для добавления при использовании тихого обновления или нет, а также, если это не нужно, если это звучит как колокольчик о любых проблемах, с которыми вы столкнулисьчерез это раньше.
Спасибо