2

我不太明白如何正确处理 observable。所以我的代码有问题。

在服务中,我有两种方法:

verify(): Observable<any> {
  return this.http.post(some_url);
}

// and

isAuthenticated(){
  this.verify().subscribe(
    data => {return true;},
    error => {return false;})
}

在警卫中,我调用 isAuthenticated 方法,我需要从中获取布尔值。

canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {
  return this.auth.isAuthenticated() //?
}

如何正确处理?我应该将 isAuthenticated 返回为 Observable 吗?并订阅警卫?

4

1 回答 1

3

我认为应该是这样的。

鉴权服务:

import { map } from "rxjs/operators";

isAuthenticated(){
  return this.verify().pipe(map(response => response));
}

警卫:

canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot {
    return this.auth.isAuthenticated();
}
于 2018-05-18T14:09:28.260 回答