馃П 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