首页 > 解决方案 > Angular 9:调用 API 来检查会话是否未过期的 Guard

问题描述

在我的 Angular 应用程序的某些页面上,我想验证会话未过期。

我在本地存储中有令牌,所以在 AuthService 我有:

isUserAuthenticated(): Observable<boolean> {
    const token = localStorage.getItem('token');
    if(token) {

      return this.http.get<any>(this.apiUrl.getUser, {headers: {'X-Auth-Token': token}}).pipe(
        tap(data => {return true}),
        catchError(this.handleError)
      ); 
    } else {
      return of(false);
    }
  }

首先:上面的代码正确吗?

我的 canActivate 函数应该是什么样子的?

我试过这个:

canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot):Observable<boolean>|boolean {
    return this.authService.isUserAuthenticated().pipe(map(User => {
      return (User) ? true : false;
    }));
}

但是当令牌过期时它会给我错误。

标签: angularangular9angular-observableangular-guards

解决方案


推荐阅读