我的Angular应用程序中有一个拦截器,用于在我的HTTP请求中设置Authorization标头。 我需要在应用程序生命周期中设置不同的令牌,因为有些请求是使用通用令牌进行的,而其他请求是使用用户的令牌进行的。
我设置了这样的拦截器:
import { environment } from '../../environments/environment';
import { Injectable } from '@angular/core';
import { HttpEvent, HttpInterceptor, HttpHandler, HttpRequest } from '@angular/common/http';
import { Observable } from 'rxjs/Observable';
/**
* Interceptor that set the Authorization header
*/
@Injectable()
export class HeaderAuthInterceptor implements HttpInterceptor {
private useGeneralToken: boolean;
private tempToken: string;
constructor() {
this.useGeneralToken = true;
this.tempToken = "";
}
intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
if (this.useGeneralToken) {
const authReq = req.clone({
setHeaders: {
Authorization: 'Bearer ' + environment.bearerToken
}
});
return next.handle(authReq);
} else {
const authReq = req.clone({
setHeaders: {
Authorization: 'Bearer ' + this.tempToken
}
});
return next.handle(authReq);
}
}
setTokenToUse(token: string) {
this.useGeneralToken = false;
this.tempToken = token;
console.log(this.tempToken);
}
}
在我的组件控制器中,我使用setTokenToUse方法。 我无法理解为什么,即使正确记录了令牌被更改,拦截器也总是使用通用令牌。
我哪里错了?