Middleware (промежуточное ПО) - это механизм фильтрации HTTP-запросов в Laravel, который позволяет обрабатывать входящие запросы и исходящие ответы. Это мощный инструмент для реализации сквозной функциональности.
// Глобальный middleware (обрабатывает все запросы)
protected $middleware = [
\App\Http\Middleware\TrustProxies::class,
\App\Http\Middleware\CheckForMaintenanceMode::class,
];
// Группы middleware (для маршрутов)
protected $middlewareGroups = [
'web' => [
\App\Http\Middleware\EncryptCookies::class,
\App\Http\Middleware\VerifyCsrfToken::class,
],
'api' => [
'throttle:60,1',
\Illuminate\Routing\Middleware\SubstituteBindings::class,
],
];
// Route middleware (применяется к конкретным маршрутам)
protected $routeMiddleware = [
'auth' => \App\Http\Middleware\Authenticate::class,
'can' => \Illuminate\Auth\Middleware\Authorize::class,
];
Создаем новый middleware командой:
php artisan make:middleware CheckAge
Пример middleware для проверки возраста:
namespace App\Http\Middleware;
use Closure;
class CheckAge
{
public function handle($request, Closure $next)
{
if ($request->age <= 200) {
return redirect('home');
}
return $next($request);
}
}
app/Http/Kernel.php
)Route::get('admin/profile', function () {
//
})->middleware('auth');
// Или несколько middleware
Route::get('/', function () {
//
})->middleware(['first', 'second']);
Middleware выполняются в порядке:
Middleware может прервать цепочку выполнения:
public function handle($request, Closure $next)
{
if (! $request->user()->isAdmin()) {
abort(403);
}
return $next($request);
}
// Объявление
public function handle($request, Closure $next, $role)
{
if (! $request->user()->hasRole($role)) {
abort(403);
}
return $next($request);
}
// Использование
Route::put('post/{id}', function ($id) {
//
})->middleware('role:editor');
Middleware, выполняемые после ответа:
public function handle($request, Closure $next)
{
$response = $next($request);
// Логирование после отправки ответа
Log::info('Request processed');
return $response;
}
auth
- аутентификацияthrottle
- ограничение частоты запросовbindings
- внедрение моделейcors
- обработка CORSverified
- проверка emailMiddleware в Laravel - это гибкий механизм для обработки HTTP-запросов и ответов, позволяющий централизованно реализовывать общую логику (аутентификацию, логирование, CORS и т.д.). Они могут быть глобальными, групповыми или применяться к конкретным маршрутам, поддерживают параметры и терминальную обработку.