Diferencia entre revisiones de «Middlewares»
(Página creada con «== Middleware en Laravel == En Laravel, el middleware es una capa intermedia que se ejecuta entre la solicitud HTTP y la respuesta. Permite filtrar y modificar solicitudes antes de que lleguen al controlador y también puede modificar la respuesta antes de enviarla al cliente. Los middlewares son útiles para tareas como autenticación, autorización, y manejo de CORS. === Propósito del Middleware === El middleware permite realizar acciones comunes para múltiples…») |
|||
Línea 64: | Línea 64: | ||
Para que Laravel reconozca el middleware, debes registrarlo en '''bootstrap/app.php'''. Hay dos tipos de registro: | Para que Laravel reconozca el middleware, debes registrarlo en '''bootstrap/app.php'''. Hay dos tipos de registro: | ||
'''Global Middleware:''' Se ejecuta en todas las solicitudes. Se registra en la propiedad ''$middleware:'' | |||
Para agregar un middleware a la pila global, puedes utilizar el siguiente código: | |||
<pre> | <pre> | ||
Línea 75: | Línea 74: | ||
}) | }) | ||
</pre> | </pre> | ||
En este ejemplo: | En este ejemplo: | ||
EnsureTokenIsValid es el middleware que deseas agregar. | ''EnsureTokenIsValid'' es el middleware que deseas agregar. | ||
El ''$middleware'' objeto proporcionado al withMiddleware cierre es una instancia de ''Illuminate\Foundation\Configuration\Middleware'', que es responsable de gestionar el middleware asignado a las rutas de tu aplicación. | El ''$middleware'' objeto proporcionado al withMiddleware cierre es una instancia de ''Illuminate\Foundation\Configuration\Middleware'', que es responsable de gestionar el middleware asignado a las rutas de tu aplicación. | ||
Línea 84: | Línea 82: | ||
El método '''append''' añade el middleware al final de la lista de middleware global. | El método '''append''' añade el middleware al final de la lista de middleware global. | ||
Si prefieres agregar un middleware al principio de la lista (para que se ejecute antes que otros middleware globales), utiliza el método prepend en lugar de append: | Si prefieres agregar un middleware al principio de la lista (para que se ejecute antes que otros middleware globales), utiliza el método ''prepend'' en lugar de ''append'': | ||
<pre> | <pre> | ||
$middleware->prepend(EnsureTokenIsValid::class); | $middleware->prepend(EnsureTokenIsValid::class); | ||
</pre> | </pre> | ||
'''Middleware de Ruta:''' Se aplica a rutas específicas. Se puede invocar el método ''middleware'' al definir la ruta. | |||
<pre> | <pre> | ||
use App\Http\Middleware\EnsureTokenIsValid; | use App\Http\Middleware\EnsureTokenIsValid; | ||
Línea 98: | Línea 94: | ||
// ... | // ... | ||
})->middleware(EnsureTokenIsValid::class); | })->middleware(EnsureTokenIsValid::class); | ||
</pre> | |||
=== Middleware de Autenticación y Autorización === | |||
Laravel incluye middleware para autenticación y autorización, como ''auth'' y ''can''. Puedes aplicarlos de la siguiente manera: | |||
<pre> | |||
Route::get('/dashboard', function () { | |||
// Panel de control | |||
})->middleware('auth'); | |||
</pre> | |||
Para autorización basada en políticas: | |||
<pre> | |||
Route::get('/admin', function () { | |||
// Área de administración | |||
})->middleware('can:access-admin'); | |||
</pre> | </pre> |
Revisión del 19:52 11 ago 2024
Middleware en Laravel
En Laravel, el middleware es una capa intermedia que se ejecuta entre la solicitud HTTP y la respuesta. Permite filtrar y modificar solicitudes antes de que lleguen al controlador y también puede modificar la respuesta antes de enviarla al cliente. Los middlewares son útiles para tareas como autenticación, autorización, y manejo de CORS.
Propósito del Middleware
El middleware permite realizar acciones comunes para múltiples rutas o solicitudes, como:
- Autenticación: Verificar que el usuario esté autenticado.
- Autorización: Comprobar permisos o roles del usuario.
- Manejo de CORS: Controlar el acceso a recursos de diferentes dominios.
- Registro de Actividades: Registrar datos de solicitud y respuesta.
Crear un Middleware
Para crear un middleware personalizado, utiliza el comando Artisan:
php artisan make:middleware NombreDelMiddleware
Esto generará un archivo de middleware en app/Http/Middleware.
Ejemplo
Para crear un middleware llamado CheckAge, usa:
php artisan make:middleware CheckAge
Esto creará un archivo CheckAge.php en app/Http/Middleware.
Definir la Lógica del Middleware
Dentro del archivo del middleware, define la lógica que debe ejecutarse:
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->age < 18) { return response('Forbidden', 403); } return $next($request); } }
En este ejemplo, el middleware verifica si el parámetro age de la solicitud es menor de 18 y devuelve un error 403 si es así.
Registrar el Middleware
Para que Laravel reconozca el middleware, debes registrarlo en bootstrap/app.php. Hay dos tipos de registro:
Global Middleware: Se ejecuta en todas las solicitudes. Se registra en la propiedad $middleware: Para agregar un middleware a la pila global, puedes utilizar el siguiente código:
use App\Http\Middleware\EnsureTokenIsValid; ->withMiddleware(function (Middleware $middleware) { $middleware->append(EnsureTokenIsValid::class); })
En este ejemplo:
EnsureTokenIsValid es el middleware que deseas agregar.
El $middleware objeto proporcionado al withMiddleware cierre es una instancia de Illuminate\Foundation\Configuration\Middleware, que es responsable de gestionar el middleware asignado a las rutas de tu aplicación.
El método append añade el middleware al final de la lista de middleware global.
Si prefieres agregar un middleware al principio de la lista (para que se ejecute antes que otros middleware globales), utiliza el método prepend en lugar de append:
$middleware->prepend(EnsureTokenIsValid::class);
Middleware de Ruta: Se aplica a rutas específicas. Se puede invocar el método middleware al definir la ruta.
use App\Http\Middleware\EnsureTokenIsValid; Route::get('/profile', function () { // ... })->middleware(EnsureTokenIsValid::class);
Middleware de Autenticación y Autorización
Laravel incluye middleware para autenticación y autorización, como auth y can. Puedes aplicarlos de la siguiente manera:
Route::get('/dashboard', function () { // Panel de control })->middleware('auth');
Para autorización basada en políticas:
Route::get('/admin', function () { // Área de administración })->middleware('can:access-admin');