angular前台拦截器

该文章描述了一个Angular服务,名为HttpHeaderInterceptor,它实现了HttpInterceptor接口来拦截HTTP请求。当接收到响应时,检查T-model和X-Token头,根据头信息存储Token到sessionstorage。
摘要由CSDN通过智能技术生成
import {Injectable} from '@angular/core';
import {
  HttpRequest,
  HttpHandler,
  HttpEvent,
  HttpInterceptor,
  HttpResponse
} from '@angular/common/http';
import {Observable, tap} from 'rxjs';
import {StorageKey} from "../../domain/constant";
import {AppStorage} from "../storage/app-storage";

@Injectable()
export class HttpHeaderInterceptor implements HttpInterceptor {

  constructor(private appStorage: AppStorage) {
  }

  intercept(request: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>> {
    return next.handle(request).pipe(
      tap((response) => {
        if (response instanceof HttpResponse) {
          const tModel = response.headers?.get('T-model');
          if (tModel === 'Y') {
            this.appStorage.storeSessionStorageKeyAndValue(StorageKey.Token, '');
          } else {
            const xToken = response.headers?.get('X-Token');
            if (xToken) {
              this.appStorage.storeSessionStorageKeyAndValue(StorageKey.Token, xToken);
            }
          }
        }
      })
    );
  }
}

@Injectable() angular服务注解

@NgModule({
  declarations: [
   
  ],
    imports: [
       
    ],
  providers: [
  
    {provide: HTTP_INTERCEPTORS, useClass: HttpHeaderInterceptor, multi: true},
   
  ],
    entryComponents: [],
    bootstrap: [AppComponent]
})

若想要拦截器生效,还需再app.module.ts中引入,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值