【问题标题】:How can i expire a jwt in node js?如何使节点 js 中的 jwt 过期?
【发布时间】:2014-12-29 07:06:35
【问题描述】:

我在 npm 中使用 jsonwebtoken 模块,我正在尝试使令牌过期,但它似乎不会过期。这是我的代码:

app.post('/token', function(req, res) {
  name = 'Name'
  var token = jwt2.sign(name, secret, { expiresInMinutes: 5 });
  res.end(token);
});

我稍后在这里使用这个令牌:

app.post('/feed', function(req, res) { 
  console.log('hiiiiii');
  token = req.body.token;

  console.log('access-token :' + token);
  jwt2.verify(token, 'secret', function(err, decoded) {
    if (err) {
      err = {
        name: 'TokenExpiredError',
        message: 'jwt expired',
        expiredAt: 1408621000
      }
      console.log(err.name);
    } else {
      console.log('decoded token:' + decoded);
      res.end(decoded);
    }
  });
});

【问题讨论】:

    标签: node.js authentication token access-token jwt


    【解决方案1】:

    这是一个最小的测试用例,展示了它按预期工作的示例:

    'use strict';
    var jwt = require('jsonwebtoken');
    
    var token = jwt.sign({ foo: 'bar' }, 'shhhhh', { expiresInMinutes: 1});
    
    console.log(token);
    
    setTimeout(function() {
        jwt.verify(token, 'shhhhh', function(err, decoded) {
            if(err) {
                console.error('err: ', err);
            } else {
                console.log('decoded: ', decoded);
            }
        });
    }, 1000 * 62);
    

    运行此测试用例时,我得到以下输出:

    eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJmb28iOiJiYXIiLCJpYXQiOjE0MTQ5Mzk5MTYsImV4cCI6MTQxNDkzOTk3Nn0.O5zrNrkrhPk_2RekdRwm-nTbHvDIWhsjf_uSWLPfdJQ
      err:  { [TokenExpiredError: jwt expired]
      name: 'TokenExpiredError',
      message: 'jwt expired',
      expiredAt: Sun Nov 02 2014 09:52:56 GMT-0500 (EST) }
    

    您在使用字符串 'secret' 验证令牌时使用变量 secret 对令牌进行签名。会不会是这个问题?

    【讨论】:

    • 如何查看是否过期??如果令牌尚未过期,我想发送响应。
    猜你喜欢
    • 2021-01-09
    • 2023-03-05
    • 1970-01-01
    • 2018-07-11
    • 2018-11-02
    • 2020-02-07
    • 2016-03-03
    • 2017-02-28
    • 2018-12-26
    相关资源
    最近更新 更多