0
所以我试图在我的应用程序的某些路线上实施警卫。所以基本上我想发送一个http请求到我的api(后端用express),如果我的会话存在,用户可以访问路由。Auth警卫与http请求不适用于Angular 2
我看到很多人在做它的例子,我尝试了所有的人,但都没有工作。我在chrome中检查了开发工具,并且没有错误,我只是看到请求处于“正在等待”状态。
那么我做错了什么?如果我不做一个http请求,它完美的工作。
我的auth-guard.service.ts
canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot) {
return this.authService.isAuthenticated();
}
这是我auth.service.ts
public isAuthenticated() : Observable<boolean> | boolean {
let router: Router = this.router;
let obs;
try {
obs = this.http.get('/api/session')
.map(result => result.json())
.map(resultJson => (resultJson && resultJson.success));
} catch (err) {
obs = Observable.of(false);
}
return obs
.map(success => {
// navigate to login page
if (!success)
router.navigate(['/login']);
return success;
});
}
这里是我的API函数
exports.getSession = function(req, res) {
return (req.session.passport)? {success: true}: {success: false};
}
如果有请求挂起,这可能意味着,你有一些后端问题,因为你的Angular客户端代码在请求结束时被执行。 –
你是对的!错误来自我的后端,谢谢! – Manu