Definir middlewares de Laravel dentro de un paquete de composer.

Angel Cruz
Angel Cruz
Tabla de contenidos

Últimamente he estado trabajando en crear paquetes para composer para ser usados con Laravel y me encontré con la necesidad de agregar varios middlewares a otros grupos de middlewares. Redundante lo sé pero espero que con el ejemplo que te voy a dar puedas entender mejor 🤣

Ok, entonces qué es un grupo de middleware? La respuesta es sencilla, si vas al archivo app/Http/Kernel.php ahí vas a poder encontrar un arreglo llamado $middlewareGroups que incluye las claves "web" y "api".

Entendiendo ya los grupos de middleware ahora pasaré a explicar como agregar un middleware desde el service provider de un paquete.

Es tan sencillo como hacer lo siguiente:

1<?php
2 
3namespace MyPackage\Namespace;
4 
5use MyPackage\Http\Middleware\CustomMiddleware;
6use Illuminate\Support\ServiceProvider;
7 
8class MyServiceProvider extends ServiceProvider
9{
10 public function register()
11 {
12 /** @var Router $router */
13 $router = $this->app['router'];
14 $router->pushMiddlewareToGroup('web', CustomMiddleware::class);
15 }
16}

También si quisieran agregar un alias para un middleware lo pueden hacer de esta forma:

1<?php
2 
3namespace MyPackage\Namespace;
4 
5use MyPackage\Http\Middleware\CustomMiddleware;
6use Illuminate\Support\ServiceProvider;
7 
8class MyServiceProvider extends ServiceProvider
9{
10 public function register()
11 {
12 /** @var Router $router */
13 $router = $this->app['router'];
14 $router->aliasMiddleware(
15 'custom.middleware',
16 CustomMiddleware::class
17 );
18 }
19}

Y ya a partir de aquí queda de ustedes usarlo en las rutas o en el constructor de sus controladores. 😉

Te podrá interesar
Context7 brinda documentación oficial y actualizada a asistentes de código IA, evitando errores por ejemplos obsoletos y APIs desactualizadas.
Herramientas gratuitas para desarrolladores: descubre cómo elegir, integrar y aprovechar las mejores opciones de software, diseño, colaboración y optimización para acelerar tu flujo de trabajo en 2025.
Descubre la historia de Apple Inc vs Apple Corps, la disputa legal entre los Beatles y la empresa de Steve Jobs que marcó un antes y un después en la relación entre música y tecnología.
Logo de Angel Cruz

Made with ♥️ & 🧉 in Montevideo, Uruguay Buenos Aires, Argentina.

[AC].dev is not affiliated with Laravel or Laravel LLC. Laravel is a Trademark of Taylor Otwell.

Code highlighting provided by Torchlight.