我正在运行一个使用 NgRx 进行状态管理的 Angular 9 Universal 应用程序。我还使用 ngrx-store-localstorage 将 Store 持久化到用户的 localStorage 中。
我正在尝试在使用 Guard 中的 NgRx 访问某些路由之前检查用户是否已登录:
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
}
我正在进行平台检查,因为我的服务器无权访问商店。但这会产生不需要的行为,因为它会检查两次,有时会在呈现受保护的页面之前呈现登录页面。
您是否知道让我的服务器了解当前状态的方法或验证我的用户是否已通过身份验证的替代方法?