|
|
|
@ -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); |
|
|
|
|