我正在构建一个使用jwt令牌进行身份验证的角度应用程序。我将令牌保存在本地存储中以对来自前端的其余调用进行身份验证。我的问题是,当jwt令牌从服务器过期时,由于jwt令牌已过期,但本地存储仍具有过期的令牌,因此应用程序不显示任何数据。我调查了此Handling Expired Token From Api in Angular 4,但不知道该怎么办。请帮助。谢谢。
这是我的身份验证管理员:
export class AuthGuard implements CanActivate {
constructor(private router: Router) { }
canActivate(
next: ActivatedRouteSnapshot,
state: RouterStateSnapshot): Observable<boolean> | Promise<boolean> | boolean {
if (localStorage.getItem('user')) {
// logged in so return true
return true;
}
// not logged in so redirect to login page with the return url
this.router.navigate(['/login'], { queryParams: { returnUrl: state.url } });
return true;
}
}
我的错误拦截器:
@Injectable()
export class H401Interceptor implements HttpInterceptor {
constructor(private authService: AuthService) { }
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
return next.handle(request).pipe(catchError(err => {
if (err.status === 401) {
// auto logout if 401 response returned from api
// this.authService.logout();
// location.reload(true);
localStorage.removeItem('currentUser');
}
const error = err.error.message || err.statusText;
return throwError(error);
}));
}
}