Отключить csrf в laravel для определенного маршрута
У меня есть платежная система, где данные передаются на сторонний сайт, а затем отсылаются обратно...
Когда данные возвращаются, он обращается к определенному URL-адресу, который позволяет сказать /ok маршрут. $_REQUEST['transaction']
.
Но из-за промежуточного ПО laravel у меня возникает несоответствие токенов. Нет никакого способа, по которому сторонний платежный API может генерировать токен, так как я его отключил? только для этого маршрута?
или есть лучший вариант?
Route::get('/payment/ok', '[email protected]');
Route::get('/payment/fail', '[email protected]');
public function Ok( Request $request )
{
$transId = $request->get('trans_id');
if ( isset( $transId ) )
{
return $transId;
}
}
Ответы
Ответ 1
Начиная с версии 5.1 промежуточное программное обеспечение Laravel VerifyCsrfToken позволяет указывать маршруты, которые исключаются из проверки CSRF. Чтобы добиться этого, вам нужно добавить маршруты в массив кроме $ в вашем классе 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/*',
];
}
Смотрите документы для получения дополнительной информации.