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