🧱 Middlewares: filtros de seguridad

🧱 Middlewares: filtros de seguridad

Controla el acceso y la seguridad de tus rutas en Laravel

Los middlewares en Laravel son filtros que se ejecutan antes o después de una petición HTTP. Permiten controlar quién accede a qué rutas, validar condiciones, y proteger tu aplicación de accesos no autorizados.

📘 ¿Qué es un middleware?

Un middleware actúa como una capa intermedia entre la solicitud del usuario y la respuesta del servidor. Laravel ejecuta estos filtros automáticamente en función de las rutas y reglas configuradas.


// Ejemplo de middleware incorporado
Route::get('/dashboard', function () {
    return view('dashboard');
})->middleware('auth');
  

En este ejemplo, la ruta /dashboard solo será accesible si el usuario ha iniciado sesión.

⚙️ Crear un middleware personalizado

Para crear tu propio middleware, usa el comando Artisan:


php artisan make:middleware VerificarRol
  

Esto generará un archivo en app/Http/Middleware/VerificarRol.php. Edita el método handle() para definir tu lógica:


namespace App\Http\Middleware;

use Closure;
use Illuminate\Http\Request;

class VerificarRol
{
    public function handle(Request $request, Closure $next, $rol)
    {
        if (auth()->check() && auth()->user()->rol === $rol) {
            return $next($request);
        }

        abort(403, 'Acceso denegado');
    }
}
  

Aquí comprobamos si el usuario autenticado tiene el rol correcto; si no, se muestra un error 403.

🔗 Registrar el middleware

Para que Laravel reconozca tu middleware, agrégalo en el archivo app/Http/Kernel.php dentro del arreglo $routeMiddleware:


protected $routeMiddleware = [
    'auth' => \App\Http\Middleware\Authenticate::class,
    'rol' => \App\Http\Middleware\VerificarRol::class,
];
  

Ahora podrás usarlo directamente en tus rutas:


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

🧠 Aplicar middlewares a grupos de rutas

Laravel también permite agrupar rutas bajo un mismo middleware. Ideal para secciones enteras del sistema, como paneles administrativos:


Route::middleware(['auth', 'rol:admin'])->group(function () {
    Route::get('/admin', [AdminController::class, 'index']);
    Route::get('/admin/usuarios', [UsuarioController::class, 'index']);
});
  

👁️ Ejemplo visual en Blade

Supongamos que un usuario sin permisos intenta acceder al panel administrativo. Podríamos mostrar una vista personalizada de error:



<div class="alert alert-danger mt-5 text-center p-4 rounded">
  <h2>🚫 Acceso denegado</h2>
  <p>No tienes los permisos necesarios para acceder a esta sección.</p>
  <a href="{{ route('home') }}" class="btn btn-primary mt-3">Volver al inicio</a>
</div>
  
💡 Tip: Usa middlewares para tareas comunes como autenticación, verificación de roles, control de IP, mantenimiento o incluso conteo de visitas.

📚 En resumen:

  • Los middlewares son filtros de seguridad que controlan el acceso a las rutas.
  • Puedes crear tus propios middlewares con php artisan make:middleware.
  • Regístralos en Kernel.php y aplícalos con ->middleware().
  • Úsalos para autenticación, roles o restricciones personalizadas.

Publicar un comentario

0 Comentarios