我完全失去了为什么我的拦截器返回一个observable没有执行,然后最后,发出下一个处理程序可观察。
我显然缺少一个基本方面,所以调试正在成为重新阅读教程的一个案例,所以任何帮助都将受到赞赏,以帮助这个过程。
以下是代码:
constructor(private tokenAuthService: TokenAuthService) { }
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
console.log(`Auth INterceptor`);
return this.tokenAuthService.token
.map(token => {
console.log(`Setting token ${token}`);
return req.clone({ 'headers': req.headers.set('authorization', `Bearer ${token}`) });
})
.concatMap(request => {
console.log(`Returning Request`);
return next.handle(request);
})
.catch((err: Error, observable) => {
if (err instanceof HttpErrorResponse && err.status === 401) {
return Observable.concat(this.tokenAuthService.refreshToken, observable);
}
console.log(`Auth Interceptor Error: ${err.message}`);
throw err;
});
}
}
答案 0 :(得分:0)
通过正确注册拦截器执行的代码。