Angular IO - 当我使用方法修改拦截器属性时,为什么拦截器属性不会改变?

时间:2018-03-14 12:30:49

标签: angular angular-services angular-http-interceptors

我的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方法。 我无法理解为什么,即使正确记录了令牌被更改,拦截器也总是使用通用令牌。

我哪里错了?

0 个答案:

没有答案