使用 ngrx 存储进行身份验证的路由防护

Vic*_*jee 2 rxjs ngrx angular angular-route-guards

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

canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {

    return this.store$.select(appState => appState.auth.authUser)
    .pipe(map(authUser => Boolean(authUser)));
}
Run Code Online (Sandbox Code Playgroud)

但是,我不太确定如何/在哪里可以从可观察到重定向到 UrlTree /login,因为我对这整个事情很陌生,特别是 rxjs。预先感谢您的任何帮助。

小智 5

也许只是

  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;
      }))
  }
Run Code Online (Sandbox Code Playgroud)

简单并且应该可以工作