Middleware w Laravel – czym jest i jak działa?
Middleware to jeden z najważniejszych mechanizmów w Laravel oraz nowoczesnych frameworkach backendowych.
Pozwala kontrolować request zanim dotrze do aplikacji lub kontrolera.
Najprościej mówiąc:
Middleware działa jak filtr lub warstwa pośrednia pomiędzy requestem użytkownika a logiką aplikacji.
Middleware może:
przepuścić request dalej,
zmodyfikować request,
zatrzymać request,
zwrócić odpowiedź wcześniej.

Jak działa middleware?
Schemat wygląda mniej więcej tak:

User Request

Middleware

Controller / Application Logic

Response


Każde żądanie HTTP może przechodzić przez wiele middleware jednocześnie.

Przykład middleware w Laravel
Najczęściej spotykany przykład to autoryzacja użytkownika:

public function handle($request, Closure $next)
{
if (!auth()->check()) {
return redirect('/login');
}

return $next($request);
}



Co tutaj się dzieje?
1. Request trafia do middleware
Laravel przechwytuje request zanim uruchomi kontroler.

2. Middleware sprawdza warunek

auth()->check()

sprawdza czy użytkownik jest zalogowany.

3. Jeśli użytkownik NIE jest zalogowany
Middleware zatrzymuje request:

return redirect('/login');

i użytkownik trafia na stronę logowania.

4. Jeśli użytkownik jest zalogowany
Request przechodzi dalej:

return $next($request);

$next() przekazuje request do kolejnego middleware lub kontrolera.

Do czego używa się middleware?
Middleware jest używany praktycznie w każdej większej aplikacji Laravel.

1. Authentication (auth)
Najpopularniejsze zastosowanie.
Sprawdzanie:
czy użytkownik jest zalogowany,
czy token JWT jest poprawny,
czy sesja istnieje.
Przykład:

Route::middleware('auth')->group(function () {
Route::get('/dashboard', ...);
});



2. Authorization / Role permissions
Sprawdzanie:
admin,
moderator,
premium user,
dostęp do zasobów.
Przykład:

if (!auth()->user()->is_admin) {
abort(403);
}



3. Rate Limiting
Ograniczanie liczby requestów.
Bardzo ważne dla:
API,
logowania,
ochrony przed brute-force,
ochrony przed spamem.
Laravel posiada wbudowany rate limiter.

4. Logowanie requestów
Middleware świetnie nadaje się do:
logowania requestów API,
analizy błędów,
monitoringu,
debugowania produkcji.
Przykład:

Log::info($request->fullUrl());


5. Ustawianie nagłówków HTTP
Np:
CORS,
cache headers,
security headers.

6. API Security
Middleware często obsługuje:
API tokens,
JWT,
OAuth,
CSRF,
firewall logic.

7. Localization
Zmiana języka aplikacji na podstawie:
nagłówka,
kraju,
ustawień użytkownika.

8. Maintenance Mode
Middleware może blokować dostęp podczas maintenance.

Middleware globalny vs route middleware
Laravel pozwala używać middleware na różnych poziomach.

Global Middleware
Działa dla każdego requestu.
Plik:

app/Http/Kernel.php

Przykład:
CORS
sessions
trimming input

Route Middleware
Działa tylko dla wybranych endpointów.
Przykład:

Route::middleware('auth')->get('/dashboard', function () {
//
});



Middleware Groups
Laravel pozwala grupować middleware.
Np grupa:

web

lub:

api


Jak stworzyć własny middleware?
Laravel posiada generator Artisan:

php artisan make:middleware CheckAdmin

Plik pojawi się w:

app/Http/Middleware


Rejestracja middleware
Middleware dodaje się w:

app/Http/Kernel.php


Przykład własnego middleware

public function handle($request, Closure $next)
{
if (!auth()->user()->is_admin) {
abort(403);
}

return $next($request);
}



Najczęstszy błąd początkujących
Wrzucanie logiki biznesowej do middleware
Middleware NIE powinien:
tworzyć zamówień,
wykonywać logiki domenowej,
liczyć biznesowych danych,
wykonywać ciężkich operacji.
Middleware powinien:
filtrować,
walidować,
kontrolować przepływ requestu.

Zła praktyka

public function handle($request, Closure $next)
{
Order::create([...]);

return $next($request);
}



Dobra praktyka
Middleware:
sprawdza dostęp,
waliduje request,
kontroluje bezpieczeństwo.
A logika biznesowa trafia do:
Service classes,
Controllers,
Domain layer,
Jobs,
Actions.

Middleware a wydajność
Każdy request przechodzi przez middleware.
Dlatego middleware powinny być:
lekkie,
szybkie,
dobrze zoptymalizowane.
Źle napisane middleware może spowolnić całą aplikację.

Middleware w nowoczesnych aplikacjach
Middleware jest podstawą:
Laravel API,
systemów SaaS,
aplikacji mobilnych,
mikroserwisów,
systemów CRM,
aplikacji enterprise.

Middleware w API-first Architecture
W architekturze API-first middleware często odpowiada za:
autoryzację tokenów,
rate limiting,
versioning API,
monitoring,
logowanie requestów,
security layers.

Podsumowanie
Middleware w Laravel to warstwa pośrednia kontrolująca requesty HTTP zanim trafią do logiki aplikacji.
To jeden z najważniejszych mechanizmów backendowych pozwalających budować:
bezpieczne aplikacje,
skalowalne API,
kontrolę dostępu,
monitoring,
zabezpieczenia systemowe.
Dobrze zaprojektowane middleware:
upraszcza architekturę,
poprawia bezpieczeństwo,
zwiększa czytelność aplikacji,
pozwala lepiej kontrolować przepływ requestów.
Najważniejsze jednak jest zachowanie odpowiedzialności middleware — powinno ono filtrować i kontrolować request, a nie przejmować logikę biznesową aplikacji.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *