Middleware
Overview
Section titled “Overview”El archivo middleware.ts en la raíz de src intercepta todas las solicitudes entrantes al servidor de Astro. Su función principal es validar la presencia de credenciales y redirigir usuarios no autenticados.
Implementación
Section titled “Implementación”El middleware utiliza defineMiddleware de Astro para encadenar lógica antes de renderizar una página.
Rutas Protegidas
Section titled “Rutas Protegidas”Por defecto, todas las rutas bajo /admin y /payroll requieren autenticación. Las rutas públicas (login, landing, etc.) están excluidas explícitamente.
// src/middleware.ts
import { defineMiddleware } from "astro:middleware";
export const onRequest = defineMiddleware(async (context, next) => { const { cookies, redirect, url } = context;
// Lista de rutas públicas if (url.pathname === "/login" || url.pathname === "/") { return next(); }
// Verificación de cookie de sesión 'sid'const hasSession = cookies.has("sid");
if (!hasSession) {return redirect("/login");}
// Continuar requestreturn next();});Relación con Orchestrator
Section titled “Relación con Orchestrator”El middleware de Sevastopol no valida el token JWT, solo verifica su existencia. La validación real de seguridad ocurre cuando Sevastopol intenta hacer fetch de datos al Orchestrator, quien rechazará el token si es inválido, forzando un logout en el frontend.