Skip to content

Cambios en Laravel 11

(con respeccto a los Middleware)

En Laravel 11, la estructura del framework ha evolucionado, y algunos archivos y configuraciones han cambiado. Si ya no encuentras el archivo app/Http/Kernel.php, es porque Laravel ha simplificado la forma en que se manejan los middlewares.

En Laravel 11, los middlewares se registran directamente en el archivo bootstrap/app.php. Aquí te explico cómo añadir un nuevo middleware en Laravel 11:

1. Crear el Middleware

Primero, crea el middleware si aún no lo has hecho. Puedes usar el comando de Artisan para generar un nuevo middleware:

php artisan make:middleware NombreDelMiddleware

Esto creará un archivo en app/Http/Middleware/NombreDelMiddleware.php.

2. Registrar el Middleware

En Laravel 11, los middlewares se registran en el archivo bootstrap/app.php. Abre este archivo y busca la sección donde se registran los middlewares. Deberías ver algo como esto:

$app->middleware([
    // Middlewares globales
]);

$app->middlewareGroups([
    'web' => [
        // Middlewares para el grupo 'web'
    ],
    'api' => [
        // Middlewares para el grupo 'api'
    ],
]);

$app->routeMiddleware([
    // Middlewares de ruta
]);

Middleware Global

Si quieres que el middleware se aplique a todas las solicitudes, regístralo en la sección $app->middleware([]):

$app->middleware([
    \App\Http\Middleware\NombreDelMiddleware::class,
    // Otros middlewares globales
]);

Middleware de Grupo

Si quieres que el middleware se aplique solo a un grupo específico (como web o api), regístralo en la sección correspondiente:

$app->middlewareGroups([
    'web' => [
        \App\Http\Middleware\NombreDelMiddleware::class,
        // Otros middlewares para el grupo 'web'
    ],
    'api' => [
        // Middlewares para el grupo 'api'
    ],
]);

Middleware de Ruta

Si quieres aplicar el middleware solo a rutas específicas, regístralo en la sección $app->routeMiddleware([]):

$app->routeMiddleware([
    'nombre' => \App\Http\Middleware\NombreDelMiddleware::class,
    // Otros middlewares de ruta
]);

Luego, puedes aplicar este middleware a rutas específicas usando el alias que has definido:

Route::get('/ruta', function () {
    // ...
})->middleware('nombre');

3. Aplicar el Middleware

Dependiendo de cómo hayas registrado el middleware, se aplicará automáticamente a todas las solicitudes, a un grupo de rutas, o a rutas específicas.

4. (Opcional) Modificar el Comportamiento del Middleware

Si necesitas modificar el comportamiento del middleware, puedes hacerlo en el archivo app/Http/Middleware/NombreDelMiddleware.php.

Aplicar de forma más directa desde rutas

1️⃣ Crear el Middleware

Ejecuta el siguiente comando para generar un middleware:

php artisan make:middleware MiNuevoMiddleware

Esto creará el archivo en:

app/Http/Middleware/MiNuevoMiddleware.php

2️⃣ Definir la lógica del Middleware

Abre el archivo recién creado y agrega la lógica en el método handle:

<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;
use Symfony\Component\HttpFoundation\Response;

class MiNuevoMiddleware
{
    public function handle(Request $request, Closure $next): Response
    {
        // Aquí puedes agregar lógica personalizada
        if (!$request->has('token')) {
            return response()->json(['error' => 'Token requerido'], 403);
        }

        return $next($request);
    }
}

3️⃣ Registrar el Middleware

Dado que Kernel.php ya no se usa, Laravel 11 maneja el middleware de forma automática con Service Providers .

🔹 Opción 1: Middleware Global (Para todas las rutas)

Abre bootstrap/app.php y registra el middleware en la configuración del framework:

$app->middleware([
    \App\Http\Middleware\MiNuevoMiddleware::class,
]);

🔹 Opción 2: Middleware de Grupo (Por ejemplo, para web o api)

Si deseas que tu middleware se aplique solo a un grupo de rutas, modifícalo en routes/web.php o routes/api.php así:

use App\Http\Middleware\MiNuevoMiddleware;

Route::middleware([MiNuevoMiddleware::class])->group(function () {
    Route::get('/dashboard', function () {
        return "Acceso permitido";
    });
});

🔹 Opción 3: Middleware en una Ruta Específica

Puedes aplicarlo directamente en una ruta específica:

Route::get('/perfil', function () {
    return "Perfil del usuario";
})->middleware(\App\Http\Middleware\MiNuevoMiddleware::class);

Conclusión

En Laravel 11, el middleware ya no se registra en Kernel.php. Ahora se agrega en bootstrap/app.php o directamente en las rutas usando middleware(). Esto hace que la aplicación sea más flexible y modular.

Resumen

En Laravel 11, los middlewares se registran en bootstrap/app.php en lugar de app/Http/Kernel.php. Puedes registrar middlewares globales, de grupo o de ruta según tus necesidades.

¡Y eso es todo!

Ahora has añadido un nuevo middleware en Laravel 11.