Saltar a contenido

🔐 Autenticación con JWT en CORDIA

La autenticación en CORDIA se gestiona mediante JSON Web Tokens (JWT), permitiendo un acceso seguro, escalable y controlado a la API. Este mecanismo es utilizado por el panel Vue, el backend Filament (indirectamente), y cualquier cliente que consuma la API.


🔑 ¿Cómo funciona?

  1. El usuario envía su email y contraseña a /login
  2. Si las credenciales son válidas, el sistema responde con un token JWT
  3. Ese token se utiliza en todas las peticiones siguientes como encabezado:
Authorization: Bearer {token}
  1. El servidor valida el token en cada petición protegida mediante middleware.

🧾 Estructura del token

El JWT contiene información encriptada como:

  • ID del usuario
  • Roles y permisos
  • Fecha de expiración

Los tokens están firmados con una clave definida en la variable de entorno JWT_SECRET.


🧪 Endpoints relacionados

Método Ruta Descripción
POST /login Iniciar sesión y obtener token
POST /logout Invalidar el token actual
GET /user Obtener información del usuario

🔒 Protección por middleware

Los endpoints protegidos usan el middleware auth:api o equivalente, que impide el acceso sin token válido.

Route::middleware('auth:api')->get('/user', fn (Request $r) => $r->user());

🧠 Roles y permisos

Una vez autenticado, el sistema evalúa:

  • El rol del usuario (admin, revisor, técnico...)
  • Sus permisos explícitos según las políticas de acceso (Policies y Gates en Laravel)

Esto permite mostrar u ocultar recursos, restringir edición, etc.


🧰 Buenas prácticas

  • El token debe almacenarse en sessionStorage (en el panel Vue)
  • El token debe expirar automáticamente tras cierto tiempo
  • No compartir tokens entre usuarios o sesiones

Para más información, consulta también los documentos api.md y roles.md.