Хотя есть некоторая ссылка, связанная с этими вопросами, но я не нашел какого-либо соответствующего ответа, поэтому надеюсь, что кто-то ответит на этот раз.
Вот сценарий, В моем угловом приложении я использую adal-angular4 , который является оберткой над Adal.js
Проблема : this.adalService.acquireToken метод только в первый разавторизоваться.Я получаю сообщение об ошибке тайм-аута, но после входа в систему, если я выполню обновление страницы, метод this.adalService.acquireToken работает правильно, и интересная часть выглядит следующим образом.
- Проблема только приходитразвернутая среда отсутствует на локальном хосте.
- Ошибка «Операция обновления токена не выполнена из-за тайм-аута» , возникающая только иногда, когда сеть работает медленно или случайное время .
Вот мой запрос службы перехвата
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> | Observable<HttpSentEvent | HttpHeaderResponse
| HttpProgressEvent | HttpResponse<any> | HttpUserEvent<any>> {
if (req && req.params instanceof CustomAuthParams && req.params.AuthNotRequired) {
return this.handleAuthentication(req, next, null);
} else {
if (!this.adalService.userInfo.authenticated) {
console.log(req, 'Cannot send request to registered endpoint if the user is not authenticated.');
}
var cachedToken = this.adalService.getCachedToken(environment.authSettings.clientId);
console.log('cachedToken', cachedToken);
if (cachedToken) {
return this.adalService.acquireToken(resourceURL).timeout(this.API_TIMEOUT).pipe(
mergeMap((token: string) => {
return this.handleAuthentication(req, next, token);
})
).catch(err => { console.log('acquire token error', err); return throwError(err) })
} else {
this.adalService.login();
}
}
}