Route guard для аутентификации в хранилище ngrx

Я пытаюсь создать AuthGuard чтобы проверить, может ли пользователь получить доступ к маршруту, в противном случае перенаправьте на страницу входа в систему. Я хочу вернуть Observable<Boolean|UrlTree> отcanActivate метод. Вот что у меня так далеко.

canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {

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

Тем не менее, я не совсем уверен, как / где я могу выдать UrlTree из наблюдаемого для перенаправления на /login, поскольку я новичок во всем этом, особенно rxjs. Заранее благодарю за любую помощь.

1 ответ

Может просто

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

Просто и должно работать

Другие вопросы по тегам