JWT 从 node.js 更新有效负载

Posted

技术标签:

【中文标题】JWT 从 node.js 更新有效负载【英文标题】:JWT updating payload from node.js 【发布时间】:2016-05-29 17:54:51 【问题描述】:

我在我的 MEAN Stack webapp 中使用 Satellizer 来登录用户。 satellizer 模块使用 JSON Web Tokens。

令牌创建于:

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) );
    );
  );
);

问题是稍后在函数中,我需要更新有效负载对象中的用户密钥。

这可能吗?

【问题讨论】:

【参考方案1】:

token 基本上看起来像字符串。当您更改有效负载时,您的令牌会更改(新字符串)。您不能在不更改字符串的情况下更改令牌/有效负载。您可以在以前的基础上创建新的。

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

【讨论】:

以上是关于JWT 从 node.js 更新有效负载的主要内容,如果未能解决你的问题,请参考以下文章

Node.js JWT,从 token 中获取 user_id

无法使用 google kms 生成有效的 jwt 签名

Node.js:登录后在 URL 中发送带有令牌(JWT)的新请求

如何从 Node.js 中的 jwt 令牌获取 user.id?

JWT 认证概念

更新存储在 jwt 有效负载中的字段