strong text我正在构建node.js + mongodb rest api。我使用jwt用户身份验证,但遇到了一个问题。我需要获得已验证用户的详细信息(user_id,name),我认为可以从令牌中获得这些信息,但我不知道如何做到这一点。怎么可能做到呢?
- 已更新**
我正在进行发布请求
router.route('/articles')
.post(function (req, res) {
var article= new Article();
article.user_id = ???; // here needs user_id
article.imdb_id = req.body.imdb_id;
article.title = req.body.title;
article.thumb = req.body.thumb;
article.save(function(err) {
if (err)
res.send(err);
res.json({ message: 'Added' });
});
});
我需要在文章集合中插入作者ID(user_id),但我不知道如何获得经过验证的user_id。
尝试执行以下操作:
var token = req.body.token || req.query.token || req.headers['x-access-token'];
if (token) {
jwt.verify(token, app.get('superSecret'), function(err, decoded) {
if (err) {
return res.json({ success: false, message: 'Failed to authenticate token.' });
} else {
req.decoded = decoded;
console.log(decoded);
next();
}
});
decoded返回所有关于用户的信息(name,password,_id)。是否可以从这里只得到user_id和name?
2条答案
按热度按时间mwg9r5ms1#
在对JSON Web令牌进行签名时,您可以向其传递一个用户对象。您可以在此处存储所需的任何用户数据。然后,对该对象进行签名和编码,并将其设置为令牌。当您向API发送请求并在auth标头中传递JWT时,如果JWT有效,则验证函数应将该用户对象返回给您。
我喜欢使用Hapi框架来创建我的Restful API,所以我将给予一个使用Hapi的示例。
在server.js文件中,您需要注册hapi-auth-jwt 2包:
您的验证功能:
validateToken函数应该获取从令牌中获取的用户id并查询该用户,如果找到了用户,那么您就知道令牌是有效的,并且可以返回并存储其余的用户信息。
要创建令牌,我使用“jsonwebtoken”包:
axzmvihb2#
假设您需要验证从用户发送的令牌是否已经在您的数据库中(我们将称之为protect)