Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

291
Vistas
Verifique si el token expiró usando esta biblioteca JWT

He configurado el token así:

 jwt.sign( { user: pick(user, ['_id', 'username']) }, secret, { expiresIn: '2m' } );

Pero cuando quiero verificar si el token expiró, este código no funciona:

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

El problema es esta parte:

 if (exp < (new Date().getTime() + 1) / 1000) { return false; }

nueva Fecha().getTime() + 1) / 1000 = 1531335468.113

exp = 1531334595

Porque no sé qué formato de tiempo usa JWT ...

¿Cómo puedo resolver esto?

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Esta es la respuesta:

 if (Date.now() >= exp * 1000) { return false; }
over 4 years ago · Santiago Trujillo Denunciar

0

Deberías usar jwt.verify . Comprobará si el token ha caducado.

jwt.decode no debe usarse si la fuente no es confiable, ya que no verifica si el token es válido.

over 4 years ago · Santiago Trujillo Denunciar

0

Función sin la biblioteca jwt :

Navegador

 function isTokenExpired(token) { const base64Url = token.split(".")[1]; const base64 = base64Url.replace(/-/g, "+").replace(/_/g, "/"); const jsonPayload = decodeURIComponent( atob(base64) .split("") .map(function (c) { return "%" + ("00" + c.charCodeAt(0).toString(16)).slice(-2); }) .join("") ); const { exp } = JSON.parse(jsonPayload); const expired = Date.now() >= exp * 1000 return expired }

O más simple

 function isTokenExpired(token) { const expiry = (JSON.parse(atob(token.split('.')[1]))).exp; return (Math.floor((new Date).getTime() / 1000)) >= expiry; }

O una sola línea:

 const isTokenExpired = token => Date.now() >= (JSON.parse(atob(token.split('.')[1]))).exp * 1000

Nodo.js

 function isTokenExpired(token) { const payloadBase64 = token.split('.')[1]; const decodedJson = Buffer.from(payloadBase64, 'base64').toString(); const decoded = JSON.parse(decodedJson) const exp = decoded.exp; const expired = (Date.now() >= exp * 1000) return expired }

O una sola línea:

 const isTokenExpired = (token) => (Date.now() >= JSON.parse(Buffer.from(token.split('.')[1], 'base64').toString()).exp * 1000)
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda