El concepto de middlewares es popular en muchos frameworks de Desarrollo Web. Laravel no es la excepción, de hecho, es uno de los frameworks donde se promueve el uso de este concepto para múltiples propósitos.
Un Middleware tiene como propósito tomar dos piezas de la aplicación y conectarlas, como un puente en el que fluye la información. Normalmente decimos que una rutina de código tiene como propósito recibir información y retornarla transformada, la única característica especial de un Middleware es que la información la obtiene de otra función de código para luego enviársela a una función distinta más.
Los middlewares en Laravel son clases con una función handle que recibe un objeto instancia de la clase $request, además de un Closure $next
class EjemploMiddleware
{
public function handle($request, Closure $next)
{}
}
Desde aquí podemos notar algo del potencial de un middleware, dado que recibimos el objeto $request, es también posible aprovechar ese objeto para pasar información que sirva luego a los controladores, esto permite que podamos aislar en un solo archivo alguna consulta que aplique para múltiples funciones de nuestros controladores.
La función de un middleware culmina cuando se manda a llamar el argumento $next como una función, con el objeto $request enviándose como argumento:
class EjemploMiddleware
{
public function handle($request, Closure $next)
{
$next($request);
}
}
Esta llamada indica que la petición debe continuar su camino hacia un siguiente middleware o hacia el controlador que le dará respuesta final a la petición.
También es posible enviar una respuesta desde el middleware, por lo que comúnmente se usan para redireccionar al usuario en caso de que alguna condición se haya o no cumplido.
Observa por ejemplo este middleware que viene predefinido con el módulo de Autenticación de Laravel.
<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Support\Facades\Auth;
class RedirectIfAuthenticated
{
public function handle($request, Closure $next, $guard = null)
{
if (Auth::guard($guard)->check()) {
return redirect('/home');
}
return $next($request);
}
}
Verifica si existe una sesión válida y en caso de que exista, redirecciona al usuario hacia el home, caso contrario permite que el flujo de la petición continúe con el siguiente middleware o al controlador, en caso de que no haya ningún middleware.
-
check_circle_outlineMódulo 1 | 7 clases
Introducción
expand_more -
check_circle_outlineMódulo 2 | 20 clases
Autenticación y Productos
expand_more-
done_all
Clase 1
Configurar conexión a la base de datos
-
done_all
Clase 2
Qué son las migraciones
-
done_all
Clase 3
Uso de migraciones
-
done_all
Clase 4
Rutas
-
done_all
Clase 5
Middlewares en Laravel
-
done_all
Clase 6
Creando middlewares
-
done_all
Clase 7
Controladores REST
-
done_all
Clase 8
Rutas REST y Layouts
-
done_all
Clase 9
Formularios LaravelCollective
-
done_all
Clase 10
Webpack
-
done_all
Clase 11
Modelos y Tablas
-
done_all
Clase 12
Guardar en la base de datos
-
done_all
Clase 13
Formulario para actualización y creación
-
done_all
Clase 14
Actualización en la base de datos
-
done_all
Clase 15
Consulta para mostrar todos los productos
-
done_all
Clase 16
Paginación
-
done_all
Clase 17
Vista Individual de productos
-
done_all
Clase 18
Eliminar de la base de datos
-
done_all
Clase 19
Protección de rutas con autenticación
-
done_all
Clase 20
Validación de registros no autorizados
-
-
check_circle_outlineMódulo 3 | 11 clases
Vue
expand_more -
check_circle_outlineMódulo 4 | 13 clases
Carrito de Compras
expand_more -
check_circle_outlineMódulo 5 | 6 clases
PayPal
expand_more