Em Laravel5, Como desativar o middleware VerifycsrfToken para rotas específicas?

Estou usando o Laravel5 para desenvolver um aplicativo. Meu aplicativo está conectado com a API VendHQ e estou destinado a obter alguns dados do VendHQ através do seu webhook. De acordo com a Documentação

Quando um evento acontece e desencadeia um webhook, enviaremos um pedido POST para um URL de sua escolha. O pedido POST será no conjunto de caracteres UTF-8, e aplicação / x-www-form-urlen codificado codificação.

O problema é que, quando eles tentam enviar um pedido POST para o meu aplicativo Laravel, nenhum Símbolo CSRF é adicionado na sua solicitação de publicação e o middleware VerifyCsrfToken está procurando um token e, finalmente, ele joga TokenMismatchException .

Minha pergunta é, como posso evitar este padrão VerifyCsrfToken Middleware para algumas rotas específicas enquanto mantém outras postagens ativadas.

Sua preocupação é apreciada e TIA
Ariful

O CSRF é habilitado por padrão em todas as rotas no Laravel 5, você pode desativá-lo para rotas 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); } 

fonte

Em Laravel 5, isso ocorreu um pouco. Agora você pode simplesmente adicionar as rotas que deseja excluir da verificação csrftoken, em $except matriz da class

‘VerifyCsrfToken’ (\ app \ Http \ Middleware \ VerifyCsrfToken.php):

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

Exemplos:

1. Se você estiver usando um grupo de rotas:

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

Sua matriz de $except parece:

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

2. Se você estiver usando uma rota simples

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

Sua matriz de $except parece:

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

3. Se você deseja excluir todas as rotas na rota principal (usuários neste caso)

Sua matriz de $except parece:

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

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

Se você estiver usando a versão 5.2 então em: app / Http / Middleware / VerifyCsrfToken.php você pode adicionar a rota ao atributo: protegido $ exceto: Por exemplo:

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

A parte usuários seria seu controlador, “get_some_info” seria a ação. Depois de executar esta alteração, certifique-se de adicionar a rota em suas rotas.php.

Adicione sua rota ao arquivo App\Http\Middleware\VerifyCsrfToken.php :

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