簡體   English   中英

截取角度響應頭

[英]Intercept response headers in angular

我正在angular5中創建基於令牌的身份驗證系統。 對於每個請求,我將發送一個包含令牌的標頭( X-SDB-AUTH-TOKEN ),並使用401或403狀態代碼進行響應,我使用一個響應標頭來標識禁止狀態的類型,例如禁止,因為密鑰與返回響應不匹配標頭AUTH-STATUS :1 ,如果用戶處於非活動狀態,則為AUTH-STATUS:2等等。我要檢查攔截器,狀態碼是401 or 403以及AUTH-STATUS:2重定向到user not active page否則如果狀態碼是401 or 403 ,並且AUTH-STATUS:1重定向到key not match page 如何一起驗證響應代碼和標頭值。 我們如何輕松讀取響應標頭和錯誤代碼。 到目前為止,我的代碼是

import { Injectable, Injector } from '@angular/core';
import { HttpEvent, HttpInterceptor, HttpHandler, HttpRequest } from 
'@angular/common/http';
import { Router } from '@angular/router';
import { Observable } from 'rxjs/Rx';
import 'rxjs/add/observable/throw'
import 'rxjs/add/operator/catch';

 @Injectable()
    export class TokenInterceptor implements HttpInterceptor {

  constructor(private router: Router) {
 }

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

if (localStorage.getItem('authToken')) {    
  req = req.clone({
    setHeaders: {
      'X-SDB-AUTH-TOKEN': localStorage.getItem('authToken')
    }
  });

}
return next.handle(req)
  .catch((error, caught) => {
    if (error.status === 401 || error.status === 403) {
       localStorage.removeItem('authToken');  
       this.router.navigate(['/testLogin']);   
    }

    return Observable.throw(error);
  }) as any;
 }  
}

catch運算符具有兩個參數.catch((error, caught) => {})

error的類型為HttpErrorResponse ,它具有一個字段headers ,使您可以訪問標題集合。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM