Я создаю угловое приложение, которое использует токен jwt для аутентификации. Я сохраняю токен в локальном хранилище для аутентификации остальных вызовов из внешнего интерфейса. Моя проблема заключается в том, что когда срок действия токена jwt истекает с сервера, приложение не отображает данные, так как срок действия токена jwt истек, но в локальном хранилище все еще истек токен. Я посмотрел на этот Обработка просроченного токена от Api в 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);
}));
}
}