angular - 未捕获( promise ): Response with status: 401 Unauthorized for URL

标签 angular typescript observable router canactivate

enter image description here我正在尝试为我的路由器实现 authGuard。但是当我干扰错误代码时,应用程序实际上会崩溃。我不知道如何应对。需要帮助。

我的AuthGuard

  canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> | boolean {

    return this._auth.validate()
      .map((isValidated) => {
        if (isValidated && localStorage.getItem('authToken') && this.checkCookie()) {
          return true;
        }
        this.router.navigate(['/login'], { queryParams: { returnUrl: state.url } });
        return false;
      });
  }

我的身份验证服务

@Injectable()
export class AuthService {

  loginStatus;

  constructor(private http: Http, private _apiEndPoint: ApiEndPoint, private router: Router) { }

  validate() {

    return this.http.get(this._apiEndPoint.validate)
      .map(
      (response: Response) => {

        const result = response.json();

        // check authentication status from response
        if (result.authenticated) {
          return true;
        } else {
          return false;
        }
      })
    .catch(error => Observable.throw(error));
  }

}

我收到此错误,未捕获( promise ):响应状态:401 URL 未经授权。

ScreenShot of my Error

当我收到该错误时,我的页面全部变成空白。

最佳答案

我通过返回 false 的 observable 来修复

return this._auth.validate()
      .map((isValidated) => {
        if (isValidated && localStorage.getItem('authToken') && this.checkCookie()) {
          return true;
        }
      }).catch(() => {
        this.router.navigate(['/login']);
        return Observable.of(false);
      });

关于angular - 未捕获( promise ): Response with status: 401 Unauthorized for URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43697084/

相关文章:

angular - ionic 与 SSR 实现

javascript - 如何从存储中下载文件

angular - 问题是 : Property 'switchMap' does not exist on type 'Observable<User>

angular - 类 'AuthGaurd' 错误地实现了接口(interface) CanActivate

observable - @ngrx/store 是热观察还是冷观察?

angular - Ionic 2 - 模型驱动形式的设置值

typescript - 订阅可观察值

angular - 无法推送 Angular 项目 - Github

Angular 4 - *ngComponentOutlet 需要澄清

typescript - 为什么强制类型转换不如显式类型化变量声明类型安全?