• Jobs
  • About Us
  • professionals
    • Home
    • Jobs
    • Courses and challenges
  • business
    • Home
    • Post vacancy
    • Our process
    • Pricing
    • Assessments
    • Payroll
    • Blog
    • Sales
    • Salary Calculator

0

799
Views
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?

about 3 years ago · Santiago Trujillo
3 answers
Answer question

0

Esta es la respuesta:

 if (Date.now() >= exp * 1000) { return false; }
about 3 years ago · Santiago Trujillo Report

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.

about 3 years ago · Santiago Trujillo Report

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)
about 3 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Our process Sales
Legal
Terms and conditions Privacy policy
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recommend me some offers
I have an error