Я пытаюсь сделать молчаливый refre sh, используя iFrame с Implicit Flow. Я не хочу использовать automaticSilentRenew , поскольку это неэффективно. Я использую библиотеку oid c -client в Angular 8 на стороне клиента. Итак, происходят две вещи:
1.) Я использую auth-guard для защиты важных компонентов. В auth-guard я проверяю, является ли токен действительным, в противном случае я вызываю signinRedirect класса auth-service, чтобы получить новый токен.
2.) Я не защищаю вызывающий компонент защищенного API с помощью auth-guard, чтобы я мог получить ошибку 401 неавторизованный для недействительного токена. Но если я защищаю его с помощью auth-guard, он направляет меня к auth-callback после получения нового набора токенов, и исходный запрос теряется.
Я как-то хочу автоматизировать этот процесс. Как, например, защита компонента, вызывающего API, с помощью auth-guard, и когда я пытаюсь поразить API с помощью токена с истекшим сроком действия, auth-guard входит в игру, обновляет текущий запрос действующим токеном за кулисами, чтобы обеспечить беспроблемное взаимодействие с пользователем ,
export class AuthService {
private manager = new UserManager(getClientSettings());
private user: User = null;
constructor() {
this.manager.getUser().then(user => {
this.user = user;
});
this.manager.events.addAccessTokenExpiring(async function(){
await this.manager.signinSilent().then(user => {
});
});
}}
Я пытаюсь перехватить addAccessTokenExpiring событие в конструкторе моего класса обслуживания auth и вызываю signinSilent , чтобы получить новый access_token. Событие начинается до истечения срока действия токена, но я получаю this.manager undefined внутри этого события.
Пожалуйста, поделитесь своими ценными данными для достижения этого. Любой существующий пример был бы весьма заметен.
Благодарю вас!
Тарун Охри