Я запускаю универсальное приложение Angular 9, которое использует NgRx для управления состоянием. Я также использую ngrx-store-localstorage для сохранения хранилища в локальном хранилище пользователя.
Я пытаюсь проверить, вошел ли пользователь в систему перед доступом к определенным маршрутам с NgRx внутри Guard:
canActivate(
next: ActivatedRouteSnapshot,
state: RouterStateSnapshot): Observable<boolean | UrlTree> | Promise<boolean | UrlTree> | boolean | UrlTree {
if (isPlatformBrowser(this.platformId)) {
console.log('browser')
return this.store.select('user').pipe(
map(authUser => {
if (!authUser.id || !authUser.token) {
console.log(authUser)
this.router.navigate(['/login'])
return false
}
return authUser.id ? true : false;
}))
}
console.log('server')
this.router.navigate(['/login'])
return false
}
Я провожу проверку платформы, поскольку у моего сервера нет доступа к магазину. Но это создает нежелательное поведение, поскольку он дважды проверяет, а иногда и отображает страницу входа перед отображением защищенной страницы. аутентифицирован?