Volver a la página principal
miércoles 24 julio 2024
183

Cómo Implementar un Middleware en Laravel 11

¿Qué es un Middleware?

En Laravel, un middleware es una capa intermedia que filtra las solicitudes HTTP entrando y saliendo de su aplicación. Se puede utilizar para diversas tareas como:

  • Autenticación de usuarios.
  • Registro y auditoría de solicitudes.
  • Manejo de permisos y roles.
  • Modificación de respuestas HTTP.

Creación de un Middleware en Laravel 11

Paso 1: Crear el Middleware

Para crear un middleware en Laravel, utilizamos el comando artisan:

php artisan make:middleware CheckAge

Este comando generará una nueva clase de middleware en app/Http/Middleware/CheckAge.php.

Paso 2: Definir la Lógica del Middleware

Abre el archivo generado CheckAge.php y define la lógica en el método handle:

<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;

class CheckAge
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle(Request $request, Closure $next)
    {
        if ($request->input('age') <= 18) {
            return redirect('home');
        }

        return $next($request);
    }
}

En este ejemplo, el middleware verifica si el usuario tiene más de 18 años. Si no es así, redirige la solicitud a la página home.

Paso 3: Registrar el Middleware

Para que Laravel reconozca el middleware, es necesario registrarlo. Esto se puede hacer de dos maneras:

Middleware Global

Para aplicar el middleware a todas las solicitudes, agrégalo al arreglo $middleware en app/Http/Kernel.php:

protected $middleware = [
    // Otros middleware
    \App\Http\Middleware\CheckAge::class,
];

Middleware de Grupo o Ruta

Para aplicar el middleware a rutas específicas o a un grupo de rutas, agrégalo al arreglo $routeMiddleware en app/Http/Kernel.php:

protected $routeMiddleware = [
    // Otros middleware
    'checkAge' => \App\Http\Middleware\CheckAge::class,
];

Paso 4: Aplicar el Middleware a Rutas

Finalmente, aplica el middleware a las rutas en routes/web.php o routes/api.php:

Aplicar a una Ruta Individual

Route::get('profile', function () {
    // Solo usuarios mayores de 18 años pueden acceder
})->middleware('checkAge');

Aplicar a un Grupo de Rutas

Route::middleware(['checkAge'])->group(function () {
    Route::get('profile', function () {
        // Solo usuarios mayores de 18 años pueden acceder
    });
    Route::get('settings', function () {
        // Solo usuarios mayores de 18 años pueden acceder
    });
});

Ejemplo Práctico: Middleware de Autenticación

A continuación, implementaremos un middleware de autenticación sencillo para demostrar un caso de uso más común.

Paso 1: Crear el Middleware

php artisan make:middleware Authenticate

Paso 2: Definir la Lógica del Middleware

Abre Authenticate.php y agrega la lógica:

<?php

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;

class Authenticate
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle(Request $request, Closure $next)
    {
        if (!$request->user()) {
            return redirect('login');
        }

        return $next($request);
    }
}

Este middleware redirige a la página de inicio de sesión si el usuario no está autenticado.

Paso 3: Registrar el Middleware

Regístralo en app/Http/Kernel.php:

protected $routeMiddleware = [
    // Otros middleware
    'auth' => \App\Http\Middleware\Authenticate::class,
];

Paso 4: Aplicar el Middleware a Rutas

Aplica el middleware a las rutas que requieran autenticación:

Route::middleware(['auth'])->group(function () {
    Route::get('dashboard', function () {
        // Solo usuarios autenticados pueden acceder
    });
    Route::get('account', function () {
        // Solo usuarios autenticados pueden acceder
    });
});

Conclusión

Implementar middleware en Laravel 11 es un proceso sencillo que puede añadir una capa significativa de funcionalidad y seguridad a tu aplicación. Desde la creación y definición de la lógica del middleware hasta su registro y aplicación a rutas, Laravel proporciona un flujo de trabajo claro y efectivo para gestionar solicitudes HTTP. Con esta guía, deberías estar en camino de implementar middleware personalizados para satisfacer las necesidades específicas de tu aplicación.

Recursos Adicionales

¡Empieza a implementar tu propio middleware en Laravel 11 hoy mismo y lleva tu aplicación al siguiente nivel!

Compartir:
Creado por:
Author photo

Jorge García

Fullstack developer