角度6的令牌处理已过期

时间:2019-04-25 07:15:44

标签: angular authentication

我正在构建一个使用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);
        }));
    }
}

0 个答案:

没有答案