2014-11-02 91 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