gpt4 book ai didi

angular - 'authGuard' 中的 canActivate 无法读取 AuthServer 的 ' observable current user '

转载 作者:太空狗 更新时间:2023-10-29 17:55:14 24 4
gpt4 key购买 nike

我使用 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;
}
)
}

授权 guard :

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 的提示)

AuthGuard

 return this.principal.currentUser().map(e=> {
if (e) {
return true;
}
}).catch(()=> {
window.location.href = ConstantService.loginUrl;
return Observable.of(false)
})
}

关于angular - 'authGuard' 中的 canActivate 无法读取 AuthServer 的 ' observable current user ',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38036113/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com