【发布时间】:2017-06-16 18:47:10
【问题描述】:
我有一个检查用户会话的警卫。 我正在从一个承诺中创建一个可观察对象并返回该可观察对象。
不幸的是,路由器总是在刷新时将我重定向到主页。 我想这与 observable 有关系,因为当我简单地导航时,它会输入 if 并返回 'Observalbe.of(true)',这很有效。
@Injectable()
export default class SessionGuard implements CanActivate {
constructor(private authService: AuthService) {}
public canActivate(): Observable<boolean> | Promise<boolean> | boolean {
if (this.authService.hasSessionChecked) {
return Observable.of(true).take(1);
}
const obs = Observable.fromPromise(this.authService.getSession());
return obs.map((session) => {
this.authService.setUserSession(session);
return true;
}).take(1);
}
}
我尝试用“return true”替换 observable,一切正常。
有什么想法吗?谢谢!
【问题讨论】:
标签: angular observable guard canactivate