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
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ámetro | Tipo | Descripción | Requerido |
|---|---|---|---|
token | string | JWT 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
- isSameDomain - Validar dominios
- Cookies - Almacenar tokens