我使用angular2 rc.3和@angular/router:“3.0.0-alpha.7
我的验证服务器
export class AuthService {
isLogged:boolean;
constructor(private principal:PrincipalService){
this.authenticated();
}
authenticated() {
this.principal.currentUser().subscribe(
e=> {
if (!!e && e.authenticated) {
this.isLogged = true;
}
this.isLogged = false;
},
error=> {
this.isLogged = false;
}
)
}
AuthGuard:
constructor(private auth:AuthService ) {}
canActivate(next: ActivatedRouteSnapshot,state: RouterStateSnapshot): boolean{
// here the **auth.isLogged** is undefined !! why?**
if(this.auth.isLogged){
return true;
}
else {
window.location.href='/login';
return false;
}
我设置了路由器
{
path: 'property',
component: PropertyHomeComponent,
canActivate: [AuthGuard]
}
当我打开'/property'页时,authGuard无法读取“this.auth.isLogged”,并且没有重定向到'/login'页,
怎么解决?
最佳答案
我发现了革命。(感谢@michael的提示)
卫士
return this.principal.currentUser().map(e=> {
if (e) {
return true;
}
}).catch(()=> {
window.location.href = ConstantService.loginUrl;
return Observable.of(false)
})
}
关于angular - “authGuard”中的canActivate无法读取AuthServer的“可观察的当前用户”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38036113/