отключите 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;
}
}
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 для получения дополнительной информации