【发布时间】:2016-10-08 01:07:37
【问题描述】:
我有以下代码:
import { Injectable } from '@angular/core';
import { Router, CanActivate } from '@angular/router';
import { Angular2TokenService } from 'angular2-token';
import { Observable } from 'rxjs/Observable';
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/toPromise';
import 'rxjs/add/operator/catch';
@Injectable()
export class AuthGuard implements CanActivate {
constructor(
private _tokenService: Angular2TokenService,
private router: Router) {}
canActivate():Observable<boolean>|boolean {
return this._tokenService.validateToken().map(res => {
return res.json().success;
});
}
}
当我加载通过AuthGuard 的页面时,我得到:
未捕获(承诺中):状态为 401 未授权 URL 的响应: http://localhost:4200/api/auth/validate_token
401 状态是预期的。我不明白的是,当响应为 401 时,如何简单地让我的 canActivate() 函数返回 false。我该怎么做?
【问题讨论】:
标签: angular observable