【发布时间】:2016-09-21 22:02:51
【问题描述】:
我想这可能更像是一个 rxjs 理解主题,但上下文说明了我对它的最佳需求:)
下面是我的 PageGuard 类中的工作代码,它会阻止路由到页面,除非 localStorage 中存在有效的 jwt。
CheckForToken() 只是在 localStorage 中存在令牌时附加授权标头。
public isAuthenticated():Observable<boolean>{
this.checkForToken();
let isAuth = new Observable<boolean>(observer => {
this.http.get(`https://testhan-api.selfbits.io/api/v1/user`,{headers: this.headers}).subscribe(res => {
if (res.status === 200){
observer.next(true);
observer.complete();
}else{
observer.next(false);
observer.complete()
}
},err => console.log(err));
});
return isAuth
}
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {
return this.isAuthenticated()
}
路由路径是这样的
{
path:'dashboard',
component:DashboardComponent,
canActivate:PageGuard
}
我的问题:到目前为止,我的理解是你需要订阅一个 observable 才能执行它,比如
observable.subscribe(res => //用res做点什么)
但是这里我只返回一个 observable,它没有被订阅,但是守卫如何评估它?
感谢您的澄清!
【问题讨论】:
标签: angular rxjs angular2-routing observable