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

时间:2019-02-12 12:32:17

标签: angular rxjs ngrx 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)));
}

但是,由于我不熟悉整个事物,尤其是rxjs,因此我不确定如何从可观察对象发出UrlTree并将其重定向到/login。预先感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

也许只是

  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;
      }))
  }

简单,应该可以工作