В Laravel защита от подделки межсайтовых запросов (CSRF) включена по умолчанию для всех маршрутов. Однако могут возникнуть ситуации, когда вам потребуется исключить защиту CSRF для определенного маршрута. В этой статье мы рассмотрим различные методы исключения защиты CSRF в маршруте Laravel и предоставим примеры кода, которые помогут вам их реализовать.
Метод 1: исключение защиты CSRF с помощью свойства except.
Один из способов исключить защиту CSRF для определенного маршрута – добавить URI маршрута к свойству except. в промежуточном программном обеспечении VerifyCsrfToken. Откройте файл app/Http/Middleware/VerifyCsrfToken.phpи добавьте URI маршрута в массив $except. Например:
protected $except = [
'your-route-uri',
];
Метод 2: отключение промежуточного программного обеспечения CSRF для определенного маршрута.
Другой подход — отключить промежуточное программное обеспечение CSRF для определенного маршрута. Этого можно добиться, изменив файл app/Http/Kernel.php. Найдите свойство protected $middlewareGroupsи добавьте промежуточное ПО App\Http\Middleware\VerifyCsrfToken::classв массив $middleware. Затем создайте новую группу промежуточного программного обеспечения и исключите маршрут из защиты CSRF. Вот пример:
protected $middlewareGroups = [
'web' => [
// ...
\App\Http\Middleware\VerifyCsrfToken::class,
// ...
],
// Add a new middleware group
'web_exclude_csrf' => [
// ...
// Exclude the route from CSRF protection
],
];
Метод 3: добавление промежуточного программного обеспечения для конкретного маршрута.
Вы также можете создать промежуточное программное обеспечение специально для исключения защиты CSRF и применить его к нужному маршруту. Сначала сгенерируйте промежуточное программное обеспечение с помощью команды make:middlewareArtisan. Затем откройте вновь созданный файл промежуточного программного обеспечения и измените метод handle, чтобы исключить защиту CSRF. Наконец, примените промежуточное программное обеспечение к маршруту, используя метод middleware. Вот пример:
php artisan make:middleware ExcludeCsrfMiddleware
За app/Http/Middleware/ExcludeCsrfMiddleware.php:
public function handle($request, Closure $next)
{
// Exclude CSRF protection logic here
return $next($request);
}
В определении маршрута:
Route::post('your-route-uri', 'YourController@yourMethod')->middleware('excludeCsrf');
В этой статье мы рассмотрели три различных метода исключения защиты CSRF в маршруте Laravel. Используя свойство except, отключив промежуточное программное обеспечение CSRF или добавив промежуточное программное обеспечение для конкретного маршрута, вы можете настроить защиту CSRF в соответствии с вашими конкретными требованиями. Не забывайте проявлять осторожность при исключении защиты CSRF, поскольку это может создать угрозу безопасности. Всегда тщательно оценивайте последствия, прежде чем внедрять эти методы в свое приложение.