Angular 6 HttpInterceptor接口在生产时失败

时间:2018-06-10 16:00:18

标签: angular angular-http-interceptors

我正在使用var date1 ='05/06/2018'; date1=parseInt(date1.split('/').reverse().join('')); //number 20180605 var date2 = new Date(); date2 = parseInt(date2.toISOString().slice(0,10).replace(/-/g,"")); // number 20180610 //compare if(date1<date2)alert('in the past'); 接口在http请愿书上添加授权标头,

HttpInterceptor

我的app模块

@Injectable()
export class AuthInterceptor implements HttpInterceptor {

    constructor(
        private localStorage: LocalStorageService,
        private sessionStorage: SessionStorageService
    ) {
    }

    intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
        if (!request || !request.url || (/^http/.test(request.url) && !(SERVER_API_URL && request.url.startsWith(SERVER_API_URL)))) {
            return next.handle(request);
        }

        const token = this.localStorage.retrieve('authenticationToken') || this.sessionStorage.retrieve('authenticationToken');
        if (!!token) {
            request = request.clone({
                setHeaders: {
                    Authorization: 'Bearer ' + token
                }
            });
        }
        return next.handle(request);
    }

}

在本地它可以很好地工作,但在生成@NgModule({ declarations: [ AppComponent ], imports: [ BrowserModule, AppRoutingModule, HttpClientModule, VistaModule, LayoutModule ], providers: [ { provide: HTTP_INTERCEPTORS, useClass: AuthInterceptor, multi: true } ], bootstrap: [AppComponent] }) export class AppModule { } 并在服务器上传时失败。 任何请愿都会获得标题:prod dist

你能帮助我吗?

1 个答案:

答案 0 :(得分:0)

声明要在根目录中提供您的拦截器:

@Injectable({
providedIn: 'root'

})

而不是仅仅使用:

@Injectable()

这意味着您的拦截器将在您所有的应用程序中可用,如果您有另一个产品模块,则可能是问题所在。

在以下位置查看更多详细信息:angular providers