我謹如果用戶從服務器登錄,但異步函數無法得到執行執行異步函數Angular2 authguards失敗
此檢查,以保護我的路線是我的代碼:
canActivate (route: ActivatedRouteSnapshot , state: RouterStateSnapshot): Observable<any> {
let permission = route.data[ "permission" ]; //permissions are set on the routes
if(permission){
..execute another function which works
)
}else{
return this.checkLogin() //this one is the one that fails
}
}
在功能上checkLogin
:
checkLogin (url?: string): any {
this.authService.checkLoggedin()
.subscribe(
res=>{
if(res){
return true;
}else{
this.router.navigate ([ '/login' ]);
return false
}
}
)
}
現在的身份驗證服務
checkLoggedin():Observable<any> {
//check from server if user is loggdin
return this._httpclient.get(this.authurl + "/default/is-loggedin")
.map(res => {
return res.json().data;
},error=>{
return Observable.of(false);
}
);
}
我在哪裏可能會出錯?
您沒有從'checkLogin'返回結果。您需要將其更改爲返回'Observable'或'Promise '。 –
Duncan