2016-02-17 141 views
0

我在MEAN Stack webapp中使用Satellizer登录用户。卫星模块使用JSON Web令牌。JWT从node.js更新有效载荷

的令牌中创建:

var jwt = require('jwt-simple'); 

function createJWT(user) { 
    var payload = { 
    sub: user._id, 
    user: { 
      displayName: user.displayName, 
      email: user.email, 
      admin: user.admin 
     }, 
    iat: moment().unix(), 
    exp: moment().add(2, 'hours').unix() 
    }; 
    return jwt.encode(payload, config.TOKEN_SECRET); 
} 

app.post('/auth/login', function(req, res) { 
    User.findOne({ email: req.body.email }, '+password', function(err, user) { 
    if (!user) { 
     return res.status(401).send({ message: 'Wrong email and/or password' }); 
    } 
    user.comparePassword(req.body.password, function(err, isMatch) { 
     if (!isMatch) { 
     return res.status(401).send({ message: 'Wrong email and/or password' }); 
     } 
     res.send({ token: createJWT(user) }); 
    }); 
    }); 
}); 

的事情是,后来在一个功能,我需要更新的有效载荷对象内部的用户密钥。

这可能吗?

回答

0

基本上令牌看起来像字符串。当你改变有效载荷时,你的令牌被改变(新的字符串)。您不能更改标记/有效内容而不更改字符串。您可以根据以前创建一个新的。

记得将新令牌返回给客户端应用程序。