Manejo de Errores (404/419) & No-Cache
Mañuti implementa un diseño defensivo para la gestión de excepciones HTTP, garantizando la continuidad de navegación, previniendo fugas de estructura y eliminando la persistencia de datos en historiales de cliente.
1. El Desafío de la Sesión en Errores 404
En instalaciones convencionales de Laravel, si una URL no coincide con ninguna ruta registrada, el framework lanza inmediatamente una excepción NotFoundHttpException antes de ejecutar los middlewares web. En consecuencia:
auth()->check()devuelvefalse.- El usuario autenticado es tratado como invitado.
- La página de error se muestra rota o desvinculada del panel administrativo.
La Solución: Comodín Route::fallback
Al definir una ruta de respaldo al final de routes/web.php, Laravel ejecuta la pila completa de middleware (StartSession, VerifyCsrfToken), permitiendo conocer la identidad del operador:
// routes/web.php
Route::fallback(function () {
return response()->view('errors.404', [], 404);
})->middleware(['web', 'check.session']);
2. Herencia Condicional de Plantillas en Blade
La vista resources/views/errors/404.blade.php adapta su interfaz según el estado de la sesión:
@extends(auth()->check() ? 'layouts.backend.base' : 'layouts.blank')
@section('content')
@auth
{{-- Conserva Sidebar, Header y Kill Switch de WebSockets activo --}}
@include('errors.content.404_admin')
@else
{{-- Muestra vista limpia de aterrizaje sin filtrar arquitectura --}}
@include('errors.content.404_public')
@endauth
@endsection
3. Resiliencia ante Expiración de Formularios (Error 419 CSRF)
Para evitar que los operadores sean recibidos por una pantalla negra con el mensaje 419 Page Expired tras dejar formularios abiertos, el capturador global intercepta TokenMismatchException:
// bootstrap/app.php
$exceptions->render(function (TokenMismatchException $e, Request $request) {
if ($request->wantsJson()) {
return response()->json(['message' => 'Sesión expirada.'], 419);
}
return redirect()
->route('login')
->with('warning', 'La sesión ha expirado por inactividad. Ingrese nuevamente.');
});
4. Middleware PreventBackHistory (Control de Caché)
Inyecta cabeceras de respuesta que neutralizan el Back-Forward Cache (bfcache) de todos los navegadores:
Cache-Control: no-cache, no-store, max-age=0, must-revalidatePragma: no-cacheExpires: Sun, 02 Jan 1990 00:00:00 GMT
Si el usuario cierra sesión y presiona el botón "Atrás" en su navegador, este se ve forzado a solicitar la página al servidor, disparando el middleware de autenticación y rebotando al usuario al formulario de acceso.