отключите csrf в laravel для определенного маршрута


У меня есть платежная система, в которой данные отправляются на сторонний сайт, а затем возвращаются обратно...

Когда данные возвращаются, они попадают по определенному URL-адресу, скажем, по маршруту /ok. $_REQUEST['transaction'].

Но из-за промежуточного программного обеспечения laravel я получаю несоответствие токенов. Не существует способа, которым сторонний платежный API может генерировать токен, так как я его отключаю? только для этого маршрута?

Или есть лучший вариант?

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;

    }

}
Author: jedrzej.kurylo, 2015-07-30

1 answers

Начиная с версии 5.1 Промежуточное программное обеспечение Laravel VerifyCsrfToken позволяет указывать маршруты, которые исключены из проверки CSRF. Для этого вам необходимо добавить маршруты в массив $except в вашем приложении\Http\middlewareverifycsrftoken класс:

<?php namespace App\Http\Middleware;

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

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

См. http://laravel.com/docs/master/routing#csrf-excluding-uris для получения дополнительной информации

 41
Author: jedrzej.kurylo, 2015-07-30 17:20:25