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:
Route::group(array('prefix' => 'api/v2'), function() { Route::post('users/valid','UsersController@valid'); });
Sua matriz de $except
parece:
protected $except = ['api/v2/users/valid'];
Route::post('users/valid','UsersController@valid');
Sua matriz de $except
parece:
protected $except = ['users/valid'];
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' ];