En Laravel 5 tenemos los middlewares, un nuevo componente similar a los filtros, aunque debe quedar claro qué no los reemplazan, ni son lo mismo.
Los filtros siguen conviviendo con los middlewares en Laravel 5, y, aunque en un futuro creo que estos pueden ser eliminados, de momento no han lo han hecho, así que puedes escoger entre seguir utilizando los filtros de la forma en la que lo hacías o utilizar los middlewares, que considero más intuitivos.
Laravel incluye un middleware que verifica si el usuario de la aplicación es autenticado, este viene por defecto, y lo puedes activar usando las migraciones que trae Laravel por defectos e intentando acceder a /home.
La ventaja de este mecanismo es un mejor control de las peticiones que recibe nuestro sitio, es decir, que estaríamos agregando capas adicionales a la lógica de nuestra aplicación de forma ordenada y correcta, para los distintos modelos de negocio, y sin necesidad de agregar nuevos componentes externos.
Laravel tiene un middleware llamado Authenticate y es alojado en App\Http\Middleware, aquí el ejemplo del middleware de autenticación.
El ámbito más común de un middleware es el de auth(autenticación) de niveles. Muy útil en sitios en donde es necesario que las sesiones posean ciertos privilegios para poder ver el contenido de determinadas páginas.
¿Cómo crear un middleware?
Lo primero que debemos hacer es crear un proyecto de Laravel 5.1. Puedes usar composer para lograrlo.
composer install create-project laravel/laravel miproyectoPosteriormente tecleamos en la terminal/consola:
php artisan make:middlware TipoMiddlewareSi revisamos dentro de App/Http/Middleware observamos que se ha creado un archivo TipoMiddleware.php igual a este:
Ahora hay que darle funcionalidad a este middleware, para ello, creamos una nueva ruta en routes.php:
Route::get('panel',['middleware' => 'tipo', function(){ return '<h1> Probando el Middleware para Solvetic.com </h1>'; }]);Si intentamos ingresar a la ruta creada en el paso anterior /panel, se mostrará un error indicándonos que la clase “tipo” no existe. No te preocupes, esto ocurre porque no se ha agregado este middleware a nuestro registro.
Debemos ir al archivo Kernel.php ubicado en App/Http, y colocarlos en los middleware específicos por ruta. Ya que si se colocan globales, por cada petición que se hace a la aplicación sin importar la ruta a la que se accede, se estaría ejecutando, y normalmente esto sería un error. Entonces lo declaramos en el array $routeMiddleware.
Si probamos ahora, FUNCIONA, ya en este punto deberíamos poder acceder a la ruta /panel sin problema alguno y sin que nos de errores, pero vamos, esto no tiene ninguna funcionalidad todavía, a #programar.
Vamos a probar la verificación si la variable tipo es igual a Administrador, se mostrará la página; de lo contrarío que se vaya al inicio del sitio.
Un plus incorporado en Laravel 5.1 es la posibilidad de pasar parámetros desde los routes:
Y con esto finalizamos, ya sabes hacer tus propios middleware, comenta y comparte, entre todos aprenderemos muchas más cosas. Saludos.
Lo tengo a buen recaudo la v 5.1