2

我正在尝试创建一个AuthGuard以检查用户是否可以访问路由,否则重定向到登录视图。我想Observable<Boolean|UrlTree>canActivate方法中返回一个。这是我到目前为止所拥有的。

canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {

    return this.store$.select(appState => appState.auth.authUser)
    .pipe(map(authUser => Boolean(authUser)));
}

但是,我不确定如何/在哪里可以从 observable 发出一个 UrlTree 以重定向到/login,因为我对这一切都是新手,特别是 rxjs。提前感谢您的帮助。

4

1 回答 1

4

也许只是

  canActivate(): Observable<boolean> {
    return this.store$.select(appState => appState.auth.authUser)
      .pipe(map(authUser => {
        if (!authUser) {
          this._router.navigate(['route-to-your-login-page'])
        }
        return authUser;
      }))
  }

简单,应该工作

于 2019-02-12T13:49:02.830 回答