【发布时间】:2018-02-12 21:25:39
【问题描述】:
我正在使用 MEAN Stack 构建一个 Web 应用程序。我想要实现的是,当用户登录时,Angular 会从我的 REST API 中获取他的用户信息。我设置了 API 路由 http://localhost:3000/api/user/profile,它应该响应包含用户对象的 json。
router.get('/user/profile', function(req, res, next){
//console.log(req);
if(req.user === undefined){
res.json({
success: false,
msg: 'Unautorized'
});
} else {
res.json({
success: true,
user: {
id: req.user.steam.id,
name: req.user.steam.name,
avatar: req.user.steam.avatar,
avatarmedium: req.user.steam.avatarmedium,
avatarfull: req.user.steam.avatarfull
}
});
}
});
当用户登录 Angular 时,启动一个 GET 请求:
ngOnInit() {
this.authService.getProfile().subscribe(profile => {
this.user = profile.user;
console.log(profile);
},
err => {
console.log(err);
return false;
});
}
getProfile():
getProfile(){
return this.http.get('http://localhost:3000/api/user/profile')
.map(res => res.json());
}
当我加载我的站点、登录并转到个人资料页面时,返回的对象包含 success: false 和消息“未经授权”而不是用户对象。为什么会这样?
【问题讨论】:
-
您没有在 this.http.get 调用中发送任何参数。而且访问参数的方式也是错误的。有关发送参数和访问获取参数的正确格式,请参阅此问题。 stackoverflow.com/questions/17007997/…
-
我认为您没有正确理解我的问题,如果我说得不好,请见谅。获取请求完全正常,即使我已登录,我也只是得到了 req.user 未定义的情况的响应。我在访问路由 /api/user/profile 和 req.user 时控制台记录了 req从角度进行调用时,对象不知何故不存在。所以登录时cookie没有被设置
-
通常用户信息通过授权标头中的身份验证令牌传递给服务器。用户进行身份验证后,您应该会收到来自身份验证提供者的令牌。该令牌很可能是一个 jwt,如果您通过标头将其传递回服务器,则您可以解码 jwt 令牌并获取有关它的信息。如果您确实有 toek,请使用jwt.io 上的调试器查看其中的所有信息。如果您在 github 中有此内容,则故障排除会更容易:)
标签: javascript node.js angular express passport.js