🔐 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?
- El usuario envía su email y contraseña a
/login - Si las credenciales son válidas, el sistema responde con un token JWT
- Ese token se utiliza en todas las peticiones siguientes como encabezado:
Authorization: Bearer {token}
- 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 (
PoliciesyGatesen 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.mdyroles.md.