2015-04-19 5 views
1

Я применил jsonwebtoken (https://www.npmjs.com/package/jsonwebtoken) и сделал две простые функции. Один, чтобы создать/подписать токен с истечением срока действия и один, чтобы проверить токен.nodejs - JSONWebToken не истекает

Я использую jwt.sign('userdata', 'abc', {expiresInSeconds: 1});, чтобы подписать токен. Токен должен истекать через одну секунду, но когда я проверяю токен с помощью jwt.verify(token, 'abc', function(err, decoded) { }, var err пуст и decoded возвращает userdata.

+0

Вы определенно ждет второй, прежде чем пытаться расшифровать? – Jakeii

+0

Я просто попробовал еще раз с тем же самым токеном, который я сгенерировал до того, как я спросил, и он все еще действителен, так что да. – Cludch

ответ

4

Библиотека jsonwebtoken позволяет вам только подписывать Объекты, а не строки. An issue предполагает, что спецификация немного неясна в этом, но библиотека предпочла работать только с объектами.

Этот код работает должным образом. Обратите внимание, что я заменил строку на Object.

token = jwt.sign({ data: 'userdata' }, 'abc', {expiresInSeconds: 1}); 
setTimeout(function() { 
    jwt.verify(token, 'abc', function(err, decoded) { 
    console.log(err, decoded); 
    }) 
}, 2000); 

Выход:

{ name: 'TokenExpiredError', 
    message: 'jwt expired', 
    expiredAt: Sun Apr 19 2015 11:08:36 GMT-0700 (Pacific Daylight Time) } 
+1

спасибо. Я хэшировал свой объект и просто пытался подписать строку – Cludch