verifycsrftoken tokenmismatchexception generar form disable delete csrftoken crs php laravel laravel-5 csrf-protection

php - tokenmismatchexception - En Laravel 5, ¿Cómo deshabilitar el middleware VerifycsrfToken para una ruta específica?



skip csrf token laravel (4)

Agregue su ruta al archivo App/Http/Middleware/VerifyCsrfToken.php :

/** * The URIs that should be excluded from CSRF verification. * * @var array */ protected $except = [ ''route-name-1'', ''route-name-2'' ];

Estoy usando Laravel 5 para desarrollar una aplicación. Mi aplicación está conectada con la API de VendHQ y estoy destinado a obtener algunos datos de VendHQ a través de su webhook. Según su Documentation

Cuando ocurre un evento y se activa un webhook, le enviaremos una solicitud POST a una URL de su elección. La solicitud POST estará en el conjunto de caracteres UTF-8 y en la codificación de application / x-www-form-urlencoded.

El problema es que cuando intentan enviar una solicitud POST a mi aplicación Laravel, no se agrega ningún token CSRF en su solicitud posterior y el middleware VerifyCsrfToken está buscando un token y finalmente lanza una TokenMismatchException .

Mi pregunta es, ¿cómo puedo evitar este Middleware VerifyCsrfToken predeterminado para algunas rutas específicas mientras VerifyCsrfToken activas otras solicitudes de publicación?


CSRF está habilitado de forma predeterminada en todas las rutas en Laravel 5, puede deshabilitarlo para rutas específicas modificando app / Http / Middleware / VerifyCsrfToken.php

//app/Http/Middleware/VerifyCsrfToken.php //add an array of Routes to skip CSRF check private $openRoutes = [''free/route'', ''free/too'']; //modify this function public function handle($request, Closure $next) { //add this condition foreach($this->openRoutes as $route) { if ($request->is($route)) { return $next($request); } } return parent::handle($request, $next); }

source


En Laravel 5 esto ha cambiado un poco. Ahora puede simplemente agregar las rutas que desea excluir de la verificación de csrftoken, en $except matriz de la clase

''VerifyCsrfToken'' (/ app / Http / Middleware / VerifyCsrfToken.php):

class VerifyCsrfToken extends BaseVerifier { protected $except = [ // Place your URIs here ]; }

Ejemplos:

1. Si está utilizando un grupo de ruta:

Route::group(array(''prefix'' => ''api/v2''), function() { Route::post(''users/valid'',''UsersController@valid''); });

Tu $except matriz se ve como:

protected $except = [''api/v2/users/valid''];

2. Si estás utilizando una ruta simple.

Route::post(''users/valid'',''UsersController@valid'');

Tu $except matriz se ve como:

protected $except = [''users/valid''];

3. Si desea excluir todas las rutas en ruta principal (usuarios en este caso)

Tu $except matriz se ve como:

protected $except = [''users/*''];

consulte: http://laravel.com/docs/master/routing#csrf-excluding-uris


Si está utilizando la versión 5.2, en: app / Http / Middleware / VerifyCsrfToken.php puede agregar la ruta al atributo: protected $ excepto: por ejemplo:

protected $except = [ ''users/get_some_info'', ];

La parte de usuarios sería su controlador, "get_some_info" sería la acción. Después de realizar este cambio, asegúrese de agregar la ruta en su route.php.