更改jwt中的解码值

时间:2017-01-24 12:49:39

标签: node.js jwt

我在节点应用程序中使用json webtoken。当用户登录时,我运行以下代码:

var jwt = require('jsonwebtoken');
var payload = {};
payload.User = user; //From User table ni database
var token = jwt.sign(payload, 'abcd');
return res.json(token: token);

当生命周期中发生某些事情时,在User表中会更改某些内容。但是,存储在签名的jwt-payload中的User-object已过时。 我在jwt-library中找不到某种刷新方法。我是否需要重新生成jwt令牌并插入更新的用户对象?这听起来像一个糟糕的解决方案所以我想知道是否有办法简单地刷新jwt-data中的内容。

1 个答案:

答案 0 :(得分:1)

要获取新令牌,您需要签署新的有效负载。更改令牌将是:

  1. 验证旧令牌
  2. 解码有效载荷
  3. 更新有效负载
  4. 签署有效负载以获取新令牌
  5. 同样在你的代码中你有:

    return res.json(token: token);
    

    我认为是真的:

    return res.json({token: token});
    

    或者 - 使用ES2015:

    return res.json({token});
    

    但无论如何,您需要将新令牌传递给客户端 - 以您的示例中的响应正文形式或Cookie的形式传递。