Как я могу направить на вход в систему, если canLoad или canActivate не удается, без маршрутизации в самом AuthGuard? - PullRequest
0 голосов
/ 07 сентября 2018

Итак, вот как выглядит мой AuthGuard:

canLoad(route: Route) {
    return this.store.select(fromRoot.getIsAuth).pipe(take(1));
}

Я проверяю информацию об аутентификации на app.component и просто возвращаю наблюдаемое логическое значение.

Я не хочу подписыватьсядля этого, чтобы перенаправить, я не хочу использовать router.navigate внутри AuthGuard, поэтому я хочу сохранить его простым Guard.

Есть ли способ перенаправить внутри модуля маршрутизации, который просто направляет к альтернативномупуть, если AuthGuard возвращает false?

1 Ответ

0 голосов
/ 07 сентября 2018

Насколько я знаю, вы должны выполнять навигацию в охране. Нет способа настроить роутер, чтобы делать то, что вы хотите. Но вам не нужно подписываться. Вы можете использовать тап для навигации.

canLoad(route: Route) {
    return this.store.select(fromRoot.getIsAuth)
        .pipe(
            take(1),
            tap(loggedIn => {
                if (!loggedIn) {
                    this.router.navigate(['/login']);
                }
            })
        );
}
...