← Назад к вопросам
Что такое middleware в Laravel? Приведите примеры использования.?
2.0 Middle🔥 221 комментариев
#Фреймворки#Архитектура и паттерны
Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI23 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Что такое middleware в Laravel?
Middleware — это слой обработки HTTP-запросов между клиентом и приложением. Выполняется до попадания в контроллер и может обработать ответ после.
Структура middleware
class CheckAge {
public function handle(Request $request, Closure $next) {
if ($request->age < 200) {
return redirect('/home');
}
$response = $next($request);
$response->header('X-Check-Age', 'true');
return $response;
}
}
Типы middleware
1. Global - выполняется для каждого запроса 2. Route - назначается конкретным маршрутам 3. Groups - группы middleware
Примеры использования
Аутентификация:
class Authenticate {
public function handle(Request $request, Closure $next) {
if (!auth()->check()) {
return redirect('/login');
}
return $next($request);
}
}
Rate Limiting:
class RateLimitMiddleware {
public function handle(Request $request, Closure $next) {
$key = 'rate:' . $request->ip();
if (Cache::get($key, 0) >= 60) {
return response('Too many requests', 429);
}
Cache::increment($key, 1, 60);
return $next($request);
}
}
CORS:
class CorsMiddleware {
public function handle(Request $request, Closure $next) {
$response = $next($request);
return $response->header('Access-Control-Allow-Origin', '*');
}
}
Логирование:
class LogRequests {
public function handle(Request $request, Closure $next) {
Log::info('Request', ['method' => $request->method()]);
$response = $next($request);
return $response;
}
}
Проверка прав:
class IsAdmin {
public function handle(Request $request, Closure $next) {
if (!auth()->user()?->isAdmin()) {
abort(403);
}
return $next($request);
}
}
Регистрация
Route middleware в app/Http/Kernel.php:
protected $routeMiddleware = [
'auth' => Authenticate::class,
'admin' => IsAdmin::class,
];
Route::delete('/users/{id}', [UserController::class, 'destroy'])
->middleware('auth', 'admin');
Middleware выполняют роль фильтра для обработки запросов и ответов.