尽管有一些与此问题相关的链接,但我没有找到任何相关的答案,所以希望这次有人能够回答。
这里是场景,在我的Angular应用程序中,我使用的是 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();
}
}
}
答案 0 :(得分:0)
好吧,在奋斗1至2天后,我找到了根本原因。因此发布此答案,以便对其他人有帮助。
adal-angular4 库使用的是 adal-angular 的 1.0.15 版本,该版本是 loadFrameTimeout的默认超时时间的旧版本是 6秒,在此版本中,没有用于增加 loadFrameTimeout 的配置。请参见下面的链接
现在,在第一次登录时,会发生很多步骤。
因此,目前在此库中无法增加 loadFrameTimeout ,因此我使用了 Angular5 warpper使用的是 adal-angular 的 1.0.17 版本,我们可以增加 loadFrameTimeout 来解决我的问题。