Definir middlewares de Laravel dentro de un paquete de composer.

ángel
ángel
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

Descubre Cache UI Laravel, el paquete que te permite listar, buscar, previsualizar y eliminar claves de caché individuales desde Artisan. Compatible con Redis,

Descubre todas las inteligencias artificiales que funcionan en WhatsApp en 2025. Lista completa con números, enlaces wa.me y cómo empezar a usarlas.

Context7 brinda documentación oficial y actualizada a asistentes de código IA, evitando errores por ejemplos obsoletos y APIs desactualizadas.

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.