📌 Cómo usar Middleware en Laravel para controlar accesos

📌 Cómo usar Middleware en Laravel para controlar accesos

Los middleware en Laravel son una de las herramientas más poderosas para gestionar el acceso y la seguridad de nuestras aplicaciones. Nos permiten interceptar solicitudes HTTP y ejecutar lógica antes de que lleguen a los controladores. En este artículo, veremos qué son, cómo funcionan y cómo puedes aplicarlos en tus proyectos.

🚀 ¿Qué es un Middleware en Laravel?

Un middleware actúa como un filtro que revisa las solicitudes antes de que lleguen al controlador. Puedes usar middleware para:

✔️ Autenticar usuarios
✔️ Registrar logs de actividad
✔️ Cifrar y descifrar datos
✔️ Aplicar restricciones de acceso según roles

Laravel ya trae varios middleware por defecto, como auth, que protege rutas para usuarios autenticados.

🛠️ Creando un Middleware en Laravel

Para crear un nuevo middleware, usamos Artisan:

php artisan make:middleware CheckUserRole

Esto generará un archivo en app/Http/Middleware/CheckUserRole.php, donde podemos definir la lógica del middleware:

namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;

class CheckUserRole
{
    public function handle(Request $request, Closure $next)
    {
        if (!$request->user() || !$request->user()->hasRole('admin')) {
            return redirect('/home'); // Redirigir si no es admin
        }

        return $next($request);
    }
}

🔗 Registrando el Middleware

Para que Laravel lo reconozca, lo agregamos en app/Http/Kernel.php:

protected $routeMiddleware = [
    'checkAdmin' => \App\Http\Middleware\CheckUserRole::class,
];

Luego, podemos aplicarlo en nuestras rutas:

Route::get('/admin', function () {
    return view('admin.dashboard');
})->middleware('checkAdmin');

⚡ Consejo de JadrDev

Usa middleware para mantener tu código limpio y seguro. No sobrecargues los controladores con lógica de validación y acceso. Mantén cada parte de tu aplicación enfocada en su propósito.

📌 ¿Qué otros casos de uso le das a los middleware en Laravel? ¡Déjamelo en los comentarios!

Read more