mirror of
https://github.com/hanzoai/node-jsonwebtoken.git
synced 2026-09-24 17:00:48 +00:00
Merge pull request #11 from luisfarzati/typed-errors
Throws typed error when token is expired
This commit is contained in:
@@ -57,7 +57,7 @@ module.exports.verify = function(jwtString, secretOrPublicKey, options, callback
|
||||
|
||||
if (payload.exp) {
|
||||
if (Math.round(Date.now()) / 1000 >= payload.exp)
|
||||
return callback(new Error('jwt expired'));
|
||||
return callback(new TokenExpiredError('jwt expired', new Date(payload.exp * 1000)));
|
||||
}
|
||||
|
||||
if (options.audience) {
|
||||
@@ -72,3 +72,20 @@ module.exports.verify = function(jwtString, secretOrPublicKey, options, callback
|
||||
|
||||
callback(null, payload);
|
||||
};
|
||||
|
||||
function JsonWebTokenError(message, error) {
|
||||
Error.call(this, message);
|
||||
this.name = 'JsonWebTokenError';
|
||||
this.message = message;
|
||||
if (error) this.inner = error;
|
||||
}
|
||||
JsonWebTokenError.prototype = Object.create(Error.prototype);
|
||||
JsonWebTokenError.prototype.constructor = JsonWebTokenError;
|
||||
|
||||
var TokenExpiredError = module.exports.TokenExpiredError = function (message, expiredAt) {
|
||||
JsonWebTokenError.call(this, message);
|
||||
this.name = 'TokenExpiredError';
|
||||
this.expiredAt = expiredAt;
|
||||
}
|
||||
TokenExpiredError.prototype = Object.create(JsonWebTokenError.prototype);
|
||||
TokenExpiredError.prototype.constructor = TokenExpiredError;
|
||||
|
||||
@@ -56,6 +56,8 @@ describe('RS256', function() {
|
||||
jwt.verify(token, pub, function(err, decoded) {
|
||||
assert.isUndefined(decoded);
|
||||
assert.isNotNull(err);
|
||||
assert.instanceOf(err, jwt.TokenExpiredError);
|
||||
assert.instanceOf(err.expiredAt, Date);
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user