web-dev-qa-db-fra.com

désactiver csrf dans laravel pour un itinéraire spécifique

J'ai un système de paiement, où les données sont soumises à un site tiers et ensuite renvoyées ...

Lorsque les données retournent, elles atteignent une URL spécifique permettant de dire/ok route. $_REQUEST['transaction'].

Mais à cause de laravel middleware, je reçois une incompatibilité de jeton. Il n'y a aucun moyen que l'API de paiement tiers puisse générer un jeton, alors comment le désactiver? Uniquement pour cet itinéraire?

ou existe-t-il une meilleure option?

Route::get('/payment/ok',   'TransactionsController@Ok');
Route::get('/payment/fail', 'TransactionsController@Fail');

public function Ok( Request $request )
{
    $transId = $request->get('trans_id');

    if ( isset( $transId ) )
    {

        return $transId;

    }

}
27
user796443

Depuis la version 5.1 le middleware VerifyCsrfToken de Laravel permet de spécifier des routes, qui sont exclues de la validation CSRF. Pour y parvenir, vous devez ajouter les routes à $ sauf dans votre tableau App\Http\Middleware\VerifyCsrfToken.php:

<?php namespace App\Http\Middleware;

use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as BaseVerifier;

class VerifyCsrfToken extends BaseVerifier
{
  protected $except = [
    'payment/*',
  ];
}

Voir docs pour plus d'informations.

77
jedrzej.kurylo