我有一个检查用户会话的警卫。我正在从一个承诺中创建一个可观察对象并返回该可观察对象。
不幸的是,路由器总是在刷新时将我重定向到主页。我想这与可观察对象有关,因为当我简单地导航时,它会输入 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,一切都按预期工作。
有任何想法吗?谢谢!