PHP: JWT token validation

PHOTO EMBED

Wed Oct 02 2024 22:15:41 GMT+0000 (Coordinated Universal Time)

Saved by @marcopinero #css

<?php
require 'vendor/autoload.php';
use Firebase\JWT\JWT;
use Firebase\JWT\ExpiredException;

$key = "tu_clave_secreta"; // La misma clave utilizada para firmar el token

// Obtener el token del encabezado de la solicitud
$headers = getallheaders();
$token = isset($headers['Authorization']) ? str_replace('Bearer ', '', $headers['Authorization']) : null;

if ($token) {
    try {
        // Decodificar el token
        $decoded = JWT::decode($token, $key, ['HS256']);
        // Aquí puedes acceder a los datos del payload
        $userId = $decoded->sub; // ID del usuario (o cualquier otro dato del payload)
        
        // Validación exitosa
        echo json_encode(['message' => 'Token is valid', 'userId' => $userId]);
    } catch (ExpiredException $e) {
        // El token ha expirado
        http_response_code(401);
        echo json_encode(['message' => 'Token has expired']);
    } catch (Exception $e) {
        // El token no es válido
        http_response_code(401);
        echo json_encode(['message' => 'Invalid token']);
    }
} else {
    http_response_code(401);
    echo json_encode(['message' => 'No token provided']);
}
content_copyCOPY