在拦截器中添加对 Jwt Token 的验证,并处理在 Token 无效或过期时的情况。可以使用第三方库 jwt-decode
来验证 Token 是否过期,以下是示例代码:
import { Injectable } from '@angular/core';
import {
HttpEvent,
HttpHandler,
HttpInterceptor,
HttpRequest,
} from '@angular/common/http';
import { Observable } from 'rxjs';
import { tap } from 'rxjs/operators';
import * as jwt_decode from 'jwt-decode';
@Injectable()
export class TokenInterceptor implements HttpInterceptor {
intercept(
request: HttpRequest,
next: HttpHandler
): Observable> {
const JWT_TOKEN = 'your_token_here';
const decodedToken: any = jwt_decode.default(JWT_TOKEN);
if (decodedToken.exp < new Date().getTime() / 1000) {
// Token 已过期,进行相关操作
} else {
request = request.clone({
setHeaders: {
Authorization: `Bearer ${JWT_TOKEN}`,
},
});
return next.handle(request).pipe(
tap(() => {
// 请求成功操作
}, (error) => {
// 请求失败操作
}));
}
}
}