Angular2身份验证卡导航至主页
我是angular 2的新手,当我刷新它的重定向到登录页面时,实际上我遇到了一个问题,但实际上我想重定向到仪表板Angular2身份验证卡导航至主页,angular,angular2-routing,angular-guards,Angular,Angular2 Routing,Angular Guards,我是angular 2的新手,当我刷新它的重定向到登录页面时,实际上我遇到了一个问题,但实际上我想重定向到仪表板 canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> | boolean { // get observable const observable = this.store.select(isAuthenticated);
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> | boolean {
// get observable
const observable = this.store.select(isAuthenticated);
// redirect to sign in page if user is not authenticated
observable.subscribe(authenticated => {
if (!authenticated) {
this.router.navigate(['/login']);
}
});
return observable;
}
请详细说明你的问题。无法正确识别您的问题,但根据我的理解,您可以将guard写为
canActivate(
next: ActivatedRouteSnapshot,
state: RouterStateSnapshot): Observable<boolean> | Promise<boolean> | boolean {
return this.authService.isLoggedIn
.take(1)
.map((isLoggedIn: boolean) => {
console.log(isLoggedIn)
if (!isLoggedIn) {
this.router.navigate(['login']);
return false;
}
return true;
});
}
你可以参考这篇文章来获得详细的解释和说明
canActivate(
next: ActivatedRouteSnapshot,
state: RouterStateSnapshot): Observable<boolean> | Promise<boolean> | boolean {
return this.authService.isLoggedIn
.take(1)
.map((isLoggedIn: boolean) => {
console.log(isLoggedIn)
if (!isLoggedIn) {
this.router.navigate(['login']);
return false;
}
return true;
});
}
private loggedIn = new BehaviorSubject<boolean>(this.loggedInUser());
get isLoggedIn() {
if (localStorage.getItem('userDetails'))
this.loggedIn.next(true);
return this.loggedIn.asObservable();
}
loggedInUser(): boolean {
return JSON.parse(localStorage.getItem('loggedInUser'));
}
if (!isLoggedIn) {
this.router.navigate(['login']);
return false;
}else{
this.router.navigate(['dashboard']);
return true;
}