jwt vérifier si le jeton expiré
J'ai configuré le jeton comme ceci:
jwt.sign(
{
user: pick(user, ['_id', 'username'])
},
secret,
{
expiresIn: '2m'
}
);
Mais quand je veux vérifier si le jeton est expiré, ce code ne fonctionne pas
function isAuthenticated() {
const token = localStorage.getItem('token');
const refreshToken = localStorage.getItem('refreshToken');
try {
decode(token);
const { exp } = decode(refreshToken);
if (exp < (new Date().getTime() + 1) / 1000) {
return false;
}
} catch (err) {
return false;
}
return true;
}
Le problème, c'est cette partie:
if (exp < (new Date().getTime() + 1) / 1000) {
return false;
}
new Date().getTime() + 1) /1000 = 1531335468.113
exp = 1531334595
Parce que je ne sais pas quel format de temps utilise JWT...
Comment puis-je résoudre ce problème?
Merci!
- imprimer la sortie de "new Date().getTime() + 1" et s'il vous plaît poster.
- Comment êtes-vous décoder le jeton? Si vous utilisez une bibliothèque, ça va valider l'expiration du jeton automatiquement (par défaut). E. g. jsonwebtoken: github.com/auth0/...
- Bon, le post est mis à jour
- avec la bibliothèque jsonwebtoken
- pourquoi ne pas utiliser jwt.vérifier, au lieu de jwt.décoder? jwt.décoder n'a même pas de vérifier que le jeton est correctement signé.
- Oh, eh bien, je voulais savoir comment puis-je faire avec décoder xD
- Je suis l'aide de jwt-décoder sur le navigateur et jsonwebtoken sur le serveur, la fonction isAuthenticated est à partir du client
- Le code semble bien pour moi, comme le font les numéros. pouvez-vous être plus précis que "ne fonctionne pas"? aussi, JWT les magasins de temps en secondes depuis l'epoch. tools.ietf.org/html/rfc7519#page-6
Vous devez vous connecter pour publier un commentaire.
C'est la réponse si quelqu'un veut savoir
Vous devez utiliser jwt.vérifier il va vérifier si le jeton est expiré.
jwt.décoder ne doit pas être utilisé si la source n'est pas fiable car elle ne vérifie pas si le jeton est valide.
expiresIn
avec le jeton ?exp
?verify
lui-même renvoie une erreur si expiré. Plus sûr que @Gabriel a dit.Malheureusement @Andrés Montoya réponse a une erreur, qui est lié à la façon dont il compare l'obj. J'ai trouvé une solution ici qui devrait résoudre ce problème:
Grâce à thejohnfreeman!
C'est pour réagir indigènes, mais la connexion fonctionne pour tous les types.