laravel 5.6 middlewares


es una capa que intercepta las peticiones del usuario
y verifica que se cumplan ciertas reglas. Si no se cumplen, la peticion es rechazada.

habiamos visto la clase VerifyCsrfToken en la que para poder saltearnos su validacion cuando enviamos el formulario pusimos el nombre 'contactar' en su lista de except

esta clase middleware se llama porque ha sido registrada en
app/http/Kernel.php

en la linea
\App\Http\Middleware\VerifyCsrfToken::class,


para poder validar correctamente debemos agregar al formulario un campo llamado _token
con el valor del token de la session

<input type="hidden" name="_token" value="{{ csrf_token() }}">


o asi:

{!!  csrf_field() !!}


podemos crear nuestra propia clase middleware

php artisan make:middleware Example

lo que crea en \App\Http\Middleware\ el archivo Example.php

editamos la funcion handle que es la que se evalua si continuar o no con la llamada

public function handle($request, Closure $next)
    {
        if(true){
          return $next($request);   
        }
        return response('no puedes continuar',404);
       
    }

ahora podemos agregarlo en Kernel.php

protected $routeMiddleware = [
      ...
     'example' => \App\Http\Middleware\Example::class,

    ];

en esta lista ponemos los middlewares que se pueden aplicar a rutas.

hay 2 maneras:

en web.php donde tenemos registradas las rutas se la plicamos a alguna en particular, por ejemplo:

Route::get('/', ['as'=>'home','uses'=>'PagesController@home'])->middleware('example');

otra manera, mejor que la anterior, es hacerlo en el controlador.

dentro del constructor

 public function __construct(){
   $this->middleware('example');
}
esto hace que todas las llamadas a las funciones del controller sean interceptadas antes por example.

si queremos especificar solo algunas funciones:

 $this->middleware('example',['only' => ['home']]);

o tambien podemos especificar las que no seran alcanzadas por el middleware:

 $this->middleware('example',['except' => ['contacto']]);




No hay comentarios:

Publicar un comentario

linux ubuntu mint actualizar chrome

 desde una terminal: $ sudo apt update $ sudo apt install google-chrome-stable