目前,我正在使用一个Angularjs网站,该网站使用JWT(json web令牌)来验证是否有人登录。现在我想使用passport / oauth添加一些“一键式”登录方法,但发现如何将登录详细信息传递回angularjs很困难。
当我使用电子邮件/密码登录时,我会生成一个令牌,并将其传递给angular:
var token = jwt.sign({ _id: user._id.toString() }, JWT_SECRET);
return res.json({
userID: user._id.toString(),
username: user.username,
isAdmin: user.isAdmin,
token: token
});
令牌用于验证登录。通过oauth时,你必须离开网站,然后回来,所以我不能以同样的方式从ajax返回一些令牌。
我认为可以将它添加到我的验证调用中(当有人刷新网站时,我会检查他们是否已经登录)。这将检查令牌并返回正确的用户数据。有没有办法检查护照是否已经在这里登录?我的验证码看起来像这样(JWT自动将令牌信息设置为req.user):
Schemas.User.findOne({ _id: req.user._id }, function (err, user) {
if (err || !user) { return res.send(401); }
return res.json({
userID: user._id.toString(),
username: user.username,
isAdmin: user.isAdmin
});
});
答案 0 :(得分:0)
所以我有几个问题。我没有正确使用护照(我忘记添加序列化/反序列化)。然后在我的auth回调中,我设置了一个带有JWT的cookie(我也没有意识到护照也自动设置了req.user),并检查了角度的cookie。如果cookie存在,我将其设置为本地存储,并删除cookie。像魅力一样工作!