🧱 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>
📚 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.phpy aplícalos con->middleware(). - Úsalos para autenticación, roles o restricciones personalizadas.
0 Comentarios
Si desea contactar comigo, lo puede hacer atravez deste formulario gracias