Angular 5响应拦截器不起作用

时间:2018-09-27 12:40:35

标签: javascript angular angular5

我的Angular 5应用程序请求拦截器正在工作,因为我可以将jwt附加到请求。

我的响应拦截器不起作用,因为它在我发出请求时首先会影响我的请求。而且它也不会拦截来自我的api的响应。

注意: 没有响应拦截器,请求就可以正常工作(只有请求拦截器)。

那是响应拦截器

@Injectable()
export class ResponseInterceptor implements HttpInterceptor {
    intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {  

         return next.handle(req)  
             .map(resp => {  
                 if (resp instanceof HttpResponse) {  
                    console.log('Response is ::');  
                     console.log(resp.body)  
                 }  
                 return resp;  
             }).catch(err => {  
                 console.log(err);  
                 if (err instanceof HttpResponse)  
  {  
                     console.log(err.status);  
                     console.log(err.body);  
                 }  
   
                 return Observable.of(err);  
             });  
   
     }  
}

这是请求拦截器

intercept(req: HttpRequest<any>,
              next: HttpHandler): Observable<HttpHeaderResponse | HttpResponse<any> | HttpEvent<any>> {

        const idToken = localStorage.getItem("admintoken") ? localStorage.getItem("admintoken") : localStorage.getItem("token");

        if (idToken) {
            const cloned = req.clone({
                headers: req.headers.set("Authorization",
                    "Bearer:" + idToken)
            });

            return next.handle(cloned);
        }
        else {
            return next.handle(req);
        }

        
    }

这是通过HttpClient模块发出的http请求的示例,位于发出api请求的服务中。

getGroups():Observable<Group[]>{
    return this.http.post(this.all_groups_url,{
      headers: new HttpHeaders().set('Accept', "application/json;q=0.9,*/*;q=0.8")
    })
    .map((groups:Group[]) => {
        if(groups){
          return groups;  
        }
        else{
          return null;
        }
    })
    .pipe(
      catchError(this.handleError)
    )
  }

这是我的app.module提供商部分

providers: [
  AuthService,
  AuthGuardService,
  UnauthGuardService,
  {
    provide: HTTP_INTERCEPTORS,
    useClass: ResponseInterceptor,
    multi: true
  },
  {
    provide: HTTP_INTERCEPTORS,
    useClass: JWTInterceptor,
    multi: true
  }
],

我需要知道如何使请求拦截器和响应拦截器协同工作,现在它只是请求拦截器有效,并且似乎响应拦截器阻止了它并且没有完成其工作。

我还需要从api截获过期令牌和未激活用户的响应。

0 个答案:

没有答案
相关问题