diff --git a/ui/src/app/core/interceptors/check.interceptor.ts b/ui/src/app/core/interceptors/check.interceptor.ts new file mode 100644 index 0000000..802f5a4 --- /dev/null +++ b/ui/src/app/core/interceptors/check.interceptor.ts @@ -0,0 +1,41 @@ +import {inject, Injectable, Injector} from '@angular/core'; +import { + HttpRequest, + HttpHandler, + HttpEvent, + HttpInterceptor, + HttpResponse +} from '@angular/common/http'; +import { Observable, tap } from 'rxjs'; +import { AuthConfigConsts, tokenNotExpired } from "../../mine/auth.jwt"; + +@Injectable() +export class CheckInterceptor implements HttpInterceptor { + constructor() {} + //从请求头获取token + intercept(req: HttpRequest, next: HttpHandler): Observable> { + const token = localStorage.getItem('token'); + let authHeader = req.headers; + const authReq = req.clone({headers: authHeader}); + return next.handle(authReq).pipe( + tap((event) => { + // 如果是 HTTP 响应 + if (event instanceof HttpResponse) { + // 从响应头中获取 Authorization token + const authToken = event.headers.get('Authorization'); + if (authToken && (!token || token !== authToken.replace(AuthConfigConsts.HEADER_PREFIX_BEARER, ''))) { + // 去掉 Bearer 前缀 + const newToken = authToken.replace(AuthConfigConsts.HEADER_PREFIX_BEARER, ''); + if(token != newToken) { + localStorage.removeItem("token") + localStorage.removeItem("giftCount") + } + } + } + }) + ); + + } + + +}