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.