我正在尝试调用 http GET 方法来检查用户是否与我的后端 NodeJS API 进行了会话,但我看不到正在发出的请求。
我在用户登录时设置了一个 observable,所以我的 AuthGuard 将首先检查它,如果它设置为 false,则调用后端以查看是否存在现有会话。
auth.guard.ts
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) {
this.authService.loggedIn.subscribe(currentState => {
this.loggedIn = currentState;
});
if (this.loggedIn) {
return true;
} else {
console.log('check for login');
this.http.get(environment.apiURL + '/checklogin'
, { withCredentials : true }
).map(user => {
const resp = user.json();
// login successful if there's a user
if (resp.isLoggedIn) {
this.authService.obsLoggedIn.next(true);
return true;
} else {
this.router.navigate(['/login'], { queryParams: { returnUrl: state.url }});
console.log('about to return false for authguard');
return false;
}
});
}
}
应用程序.js
app.get('/checklogin', function(req, res) {
console.log('get from login ' + req.body);
req.session.user ? res.status(200).send({isLoggedIn: true}) : res.status(200).send({isLoggedIn: false});
});
我知道我的 apiURL 没有任何问题,因为进入登录页面并登录工作正常,并且我可以看到后端日志记录。
谁能看到为什么我的http请求不起作用?