【发布时间】:2019-12-13 23:19:51
【问题描述】:
我正在尝试基于我的 api 创建一个日志系统, 我创建了 3 个函数: me() :返回带有令牌的用户配置文件 isloggedin() 返回一个 boolean observable,基于:有 me() 请求 data.success(已经被 api 接受的令牌) 最后,我将它用在我的角度防护中;
我有:
console.log("triggered");
if(localStorage.getItem('token') && localStorage.getItem('logged') == "True"){
let meOptions = {
headers: new HttpHeaders({
'Content-Type': 'application/json',
'Authorization': localStorage.getItem('token'),
})
};
return this.http.get<user>('https://localhost:3000/user/me', meOptions);
}else{
return of(new user(false, "",""));
}
}
isloggedin():Observable<boolean>{
return this.me().pipe(map(data=>{ //pipe sur undefined
console.log(data);
if(data.success){
console.log("renvoie oui")
return true;
}else{
console.log("renvoie non")
return false;
}
}))
}
我验证了:
this.auth.isloggedin().subscribe((data)=>{
console.log(data);
})
- 返回真或假 但是,当涉及到 observable 时:
if(this.auth.isloggedin()){
console.log("You logged - guard")
return true;
}else{
console.log("Kick by guard ! Not logged - guard")
this.router.navigate(["auth"]);
return false;
}
}```
Everytime, the guard returns "logged", even when the isloggedin() tells that the user isn't loggedin,
what am I doing wrong ? How to correct it ?
Thanks
【问题讨论】:
标签: angular typescript rxjs observable guard