diff --git a/src/app/http-interceptors/base-interceptor.ts b/src/app/http-interceptors/base-interceptor.ts index b39d22a..ba06d87 100644 --- a/src/app/http-interceptors/base-interceptor.ts +++ b/src/app/http-interceptors/base-interceptor.ts @@ -1,12 +1,13 @@ import { Injectable } from '@angular/core'; import { HttpClient, HttpInterceptor, HttpHandler, HttpRequest, - HttpErrorResponse + HttpErrorResponse, + HttpResponse } from '@angular/common/http'; + import { throwError } from 'rxjs' -import { catchError } from 'rxjs/operators'; +import { catchError, tap, finalize } from 'rxjs/operators'; import { Router } from '@angular/router' -import { CacheTokenService } from '../service/cache-token.service' import { NzMessageService } from 'ng-zorro-antd/message'; //baseurl // const baseurl = 'http://39.106.78.171:8008'; @@ -14,7 +15,7 @@ import { NzMessageService } from 'ng-zorro-antd/message'; @Injectable() export class BaseInterceptor implements HttpInterceptor { - constructor(private router: Router, public token: CacheTokenService, private message: NzMessageService) { } + constructor(private router: Router, private message: NzMessageService) { } intercept(req, next: HttpHandler) { @@ -34,15 +35,33 @@ export class BaseInterceptor implements HttpInterceptor { /*获取token*/ let token = sessionStorage.getItem("token") /*此处设置额外请求头,token令牌*/ - newReq.headers = - newReq.headers.set('Authorization', `Bearer ${token}`) + if (!!token) { + newReq.headers = newReq.headers.set('Authorization', `Bearer ${token}`) + } + } // 携带请求头发送下一次请求 return next.handle(newReq) .pipe( - //箭头函数,注意this指向 - catchError((err) => this.handleError(err)) + tap(event => { + if (event instanceof HttpResponse) { + // 成功 + // console.log('成功', event.headers.get('x-refresh-encryptedtoken')) + if (!!event.headers.get('x-refresh-token')) { + sessionStorage.setItem('token', event.headers.get('x-refresh-token')) + sessionStorage.setItem('encryptedAccessToken', event.headers.get('x-refresh-encryptedtoken')) + } + } + }, error => { + // 失败 + console.log('请求http失败', error) + this.handleError(error) + }), + finalize(() => { + // 请求完成 + // console.log('complete') + }) ) } @@ -50,10 +69,8 @@ export class BaseInterceptor implements HttpInterceptor { //401 token过期 403没权限!!! 400参数错误 404未找到 614刷新令牌过期!!! private handleError(error: HttpErrorResponse) { - console.log('http错误', error) // 用户认证失败返回登录页 if (error.status === 401 || error.status === 614) { - this.token.delete() sessionStorage.clear() // window.localStorage.clear() localStorage.removeItem("isautologin") @@ -66,7 +83,9 @@ export class BaseInterceptor implements HttpInterceptor { if (error.status === 400) { this.message.create('error', `请核对您的输入信息或格式是否正确!`); } - + if (error.status === 500) { + this.message.create('error', `状态500,服务器错误!`); + } if (error.error instanceof ErrorEvent) { // 发生客户端或网络错误。相应处理。 console.error('An error occurred:', error.error.message);