在Angular 6中,可以使用Interceptor来处理过期令牌。下面是一个处理过期令牌的示例代码:
创建一个Interceptor来检查令牌是否过期:
import { Injectable } from '@angular/core';
import { HttpInterceptor, HttpRequest, HttpHandler, HttpEvent } from '@angular/common/http';
import { Observable } from 'rxjs/Observable';
@Injectable()
export class TokenInterceptor implements HttpInterceptor {
intercept(request: HttpRequest, next: HttpHandler): Observable> {
// 检查令牌是否过期
const token = localStorage.getItem('token');
const tokenExpiration = localStorage.getItem('tokenExpiration');
if (token && tokenExpiration && new Date(tokenExpiration) < new Date()) {
// 令牌过期,进行处理
// 可以跳转到登录页面或者自动刷新令牌
}
// 继续发送请求
return next.handle(request);
}
}
在app.module.ts中注册Interceptor:
import { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';
import { TokenInterceptor } from './token-interceptor';
@NgModule({
imports: [ HttpClientModule ],
providers: [
{
provide: HTTP_INTERCEPTORS,
useClass: TokenInterceptor,
multi: true
}
]
})
export class AppModule { }
这样,每次发送请求时,Interceptor都会检查令牌是否过期。如果令牌过期,则可以执行相应的处理,例如跳转到登录页面或者自动刷新令牌。