Saltar al contenido principal

parseJwt

Paquete: @tiendana/utils

Decodifica un JWT (JSON Web Token) y retorna el payload sin verificar la firma. Importante: Esta función NO valida la firma del token y solo debe usarse en el cliente para leer información, nunca para autenticación.

⚠️ Advertencia de Seguridad​

NO usa esta función para autenticación

parseJwt solo DECODIFICA el token, NO VERIFICA la firma. Cualquiera puede crear un token falso. Esta función es solo para leer información en el cliente, NUNCA para validar autenticación en el servidor.

✅ Uso correcto: Leer nombre de usuario, email, expiración en cliente
❌ Uso incorrecto: Validar permisos, autenticar usuarios, decisiones de seguridad

Características​

✅ Decodifica payload de JWT
✅ Base64 URL decode
✅ Maneja caracteres Unicode
❌ NO verifica firma
❌ NO valida expiración
❌ NO valida issuer/audience

Firma​

function parseJwt(token: string): any

Parámetros​

ParámetroTipoDescripciónRequerido
tokenstringJWT token completo (header.payload.signature)✅

Retorno​

Tipo: any

Objeto JavaScript con el contenido del payload del JWT.

Ejemplos de Uso​

Decodificar Token Básico​

import { parseJwt } from '@tiendana/utils';

const token = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiIxMjMiLCJlbWFpbCI6InVzZXJAZXhhbXBsZS5jb20ifQ.signature';

const payload = parseJwt(token);
// {
// userId: '123',
// email: 'user@example.com'
// }

Verificar Expiración (Cliente)​

function isTokenExpired(token: string): boolean {
try {
const payload = parseJwt(token);
const now = Math.floor(Date.now() / 1000);
return payload.exp < now;
} catch {
return true;
}
}

if (isTokenExpired(authToken)) {
console.log('Token expirado, redirigir a login');
}

Mostrar Info de Usuario​

function getUserInfo(token: string) {
const payload = parseJwt(token);

return {
name: payload.name || payload.userName,
email: payload.email,
roles: payload.roles || []
};
}

const user = getUserInfo(authToken);
console.log(`Bienvenido, ${user.name}`);

Debug de Tokens​

function debugToken(token: string) {
try {
const payload = parseJwt(token);
console.table(payload);
} catch (error) {
console.error('Token inválido:', error);
}
}

Casos de Uso Comunes​

  • Mostrar info de usuario: Nombre, email, avatar en UI
  • Verificar expiración: Renovar token antes de que expire
  • Debug: Inspeccionar contenido de tokens en desarrollo
  • UI condicional: Mostrar/ocultar elementos según claims del token

Ver También​