2014-11-02 90 views
0

我在npm中使用jsonwebtoken模块,我试图使令牌失效,但似乎它不会过期。这里是我的代码:如何在节点js中过期jwt?

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

回答

0

这里有一个最小的测试案例,显示工作它的一个例子像预期一样:

'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'验证它。这可能是问题吗?

+0

是的,我想那是我的错!谢谢!! :) – 2014-11-02 15:03:01

+0

如何检查它是否过期?如果令牌尚未过期,我想发送回复。 – 2014-11-02 15:14:06

+0

如果没有错误,请发送您的回复。 – rtucker88 2014-11-02 17:38:04