РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1311 of 1392 menu

Команда make:middleware

Команда make:middleware генерирует новый класс посредника в директории app/Http/Middleware. Посредники выполняют проверку HTTP-запросов до того, как они достигнут контроллера, или после формирования ответа. Команда принимает один обязательный параметр - имя класса посредника в формате CamelCase.

Синтаксис

php artisan make:middleware ClassName

Пример

Создадим посредник для проверки возраста пользователя:

<?php namespace App\Http\Middleware; use Closure; use Illuminate\Http\Request; use Illuminate\Http\Response; class CheckAge { public function handle(Request $request, Closure $next, int $age): Response { if ($request->input('age') < $age) { abort(403, 'Access denied'); } return $next($request); } } ?>

Команда создаёт файл с заготовкой класса. Метод handle принимает текущий запрос, замыкание для передачи управления дальше и дополнительные параметры. Если условие не выполняется, возвращается ошибка, иначе запрос передаётся следующему посреднику.

Пример

Создадим посредник для проверки наличия заголовка API-ключа:

<?php namespace App\Http\Middleware; use Closure; use Illuminate\Http\Request; use Illuminate\Http\Response; class ApiKeyAuth { public function handle(Request $request, Closure $next): Response { $apiKey = $request->header('X-API-KEY'); if (!$apiKey || $apiKey !== config('app.api_key')) { abort(401, 'Unauthorized'); } return $next($request); } } ?>

Пример

Создадим посредник для логирования всех входящих запросов:

<?php namespace App\Http\Middleware; use Closure; use Illuminate\Http\Request; use Illuminate\Http\Response; use Illuminate\Support\Facades\Log; class LogRequests { public function handle(Request $request, Closure $next): Response { $method = $request->method(); $url = $request->fullUrl(); Log::info("{$method} {$url}"); return $next($request); } } ?>

После создания посредника его необходимо зарегистрировать в файле app/Http/Kernel.php. Для глобальных посредников используется свойство $middleware, а для назначения отдельным маршрутам - свойство $routeMiddleware.

Пример

Регистрация посредника для маршрутов в файле ядра:

<?php namespace App\Http; use Illuminate\Foundation\Http\Kernel as HttpKernel; class Kernel extends HttpKernel { protected $routeMiddleware = [ 'auth' => \App\Http\Middleware\Authenticate::class, 'age' => \App\Http\Middleware\CheckAge::class, 'api_key' => \App\Http\Middleware\ApiKeyAuth::class, ]; } ?>

Теперь посредника можно использовать в маршрутах:

<?php use App\Http\Controllers\UserController; use Illuminate\Support\Facades\Route; Route::get('/user', [UserController::class, 'index']) ->middleware('auth'); Route::get('/profile', [UserController::class, 'profile']) ->middleware('age:18'); Route::get('/data', [UserController::class, 'data']) ->middleware('api_key'); ?>

Смотрите также

  • команда make:controller,
    которая создаёт новый контроллер
  • команда make:request,
    которая создаёт класс запроса для валидации
  • команда make:model,
    которая создаёт новую Eloquent-модель
  • команда make:job,
    которая создаёт класс задания для очередей
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить