Laravel Middleware Kullanımı ile HTTP İsteklerini Filtreleme ve Kontrol Etme
Laravel, modern web uygulamaları geliştirmek için kullanılan güçlü bir PHP framework’üdür. Laravel’in sunduğu araçlardan biri olan Middleware, HTTP isteklerini filtrelemek ve kontrol etmek için kullanılan bir mekanizmadır. Middleware, istek ve yanıt arasında çalışarak belirli kontroller yapar ve bu sayede uygulamanızın güvenliğini, kullanıcı yetkilendirmesini ve diğer işlemlerini kolayca yönetebilirsiniz. Bu makalede, Laravel Middleware’in ne olduğunu, nasıl oluşturulduğunu ve nasıl kullanıldığını detaylı bir şekilde inceleyeceğiz.
1️⃣ Middleware Nedir?
Middleware, Laravel’de HTTP isteklerini filtrelemek ve kontrol etmek için kullanılan bir ara katmandır. Bir HTTP isteği uygulamaya ulaşmadan önce veya uygulamadan bir yanıt döndürülmeden önce Middleware devreye girer. Bu sayede, istekler üzerinde belirli kontroller yapabilir ve gerekli durumlarda isteği reddedebilir veya yönlendirebilirsiniz.
Middleware’in Kullanım Alanları:
- Kullanıcı Yetkilendirme: Kullanıcının giriş yapıp yapmadığını veya belirli bir yetkiye sahip olup olmadığını kontrol eder.
- Güvenlik İşlemleri: İsteklerin belirli bir IP adresinden gelip gelmediğini veya belirli güvenlik kurallarına uyup uymadığını kontrol eder.
- Veri Doğrulama: İstekte gönderilen verilerin geçerli olup olmadığını kontrol eder.
- Loglama ve Analiz: İsteklerin loglanması veya analiz edilmesi için kullanılır.
Örneğin, bir kullanıcının belirli bir sayfaya erişip erişemeyeceğini kontrol etmek için Middleware kullanabilirsiniz.
2️⃣ Middleware Nasıl Oluşturulur?
Laravel’de yeni bir Middleware oluşturmak oldukça kolaydır. Laravel Artisan komut satırı aracını kullanarak bir Middleware oluşturabilirsiniz.
Adım 1: Middleware Oluşturma
Terminalde aşağıdaki Artisan komutunu çalıştırarak yeni bir Middleware oluşturabilirsiniz:
php artisan make:middleware CheckAge
Bu komut, app/Http/Middleware/CheckAge.php
dosyasını oluşturacaktır.
Adım 2: Middleware İçeriğini Düzenleme
Oluşturulan Middleware dosyası aşağıdaki gibi görünecektir:
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
class CheckAge
{
public function handle(Request $request, Closure $next)
{
if ($request->age < 18) {
return redirect('home');
}
return $next($request);
}
}
handle
Metodu: Middleware’in ana işlevi bu metod içinde tanımlanır. Bu metod, gelen isteği kontrol eder ve gerekli işlemleri yapar.$request->age
: İstekte gönderilenage
parametresini kontrol eder.redirect('home')
: Eğer kullanıcının yaşı 18’den küçükse, kullanıcıyıhome
sayfasına yönlendirir.$next($request)
: Eğer şart sağlanıyorsa, isteğin devam etmesine izin verir.
3️⃣ Middleware’i Route Üzerinde Kullanma
Oluşturduğunuz Middleware’i kullanabilmek için öncelikle app/Http/Kernel.php
dosyasına eklemeniz gerekiyor.
Adım 1: Middleware’i Kernel’e Ekleme
Kernel.php
dosyasında bulunan $routeMiddleware
dizisine Middleware’inizi ekleyin:
protected $routeMiddleware = [
'checkAge' => \App\Http\Middleware\CheckAge::class,
];
Bu işlem, checkAge
adıyla Middleware’inizi kaydeder.
Adım 2: Middleware’i Route Üzerinde Uygulama
Middleware’i bir route üzerinde kullanmak için aşağıdaki gibi bir tanım yapabilirsiniz:
Route::get('/profile', function () {
return view('profile');
})->middleware('checkAge');
Bu örnekte, /profile
sayfasına erişmeye çalışan kullanıcıların yaşı kontrol edilir. Eğer kullanıcı 18 yaşından küçükse, home
sayfasına yönlendirilir.
4️⃣ Middleware’i Global Olarak Kullanma
Eğer bir Middleware’i tüm isteklere otomatik olarak uygulamak istiyorsanız, Kernel.php
dosyasındaki $middleware
dizisine ekleyebilirsiniz:
protected $middleware = [
\App\Http\Middleware\CheckAge::class,
];
Bu durumda, Middleware tüm HTTP isteklerinde çalışacaktır. Ancak, bu tür bir kullanım dikkatli yapılmalıdır çünkü Middleware’in tüm isteklerde çalışması, performans sorunlarına neden olabilir.
5️⃣ Middleware Grupları
Laravel, Middleware’leri gruplamak için $middlewareGroups
özelliğini sunar. Bu özellik, birden fazla Middleware’i tek bir grup altında toplamanızı sağlar. Örneğin, web
ve api
grupları varsayılan olarak Laravel’de tanımlıdır.
Örnek: Middleware Grubu Oluşturma
protected $middlewareGroups = [
'web' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Session\Middleware\StartSession::class,
],
'api' => [
'throttle:api',
\Illuminate\Routing\Middleware\SubstituteBindings::class,
],
];
Bu grupları route’lar üzerinde kullanabilirsiniz:
Route::middleware('web')->group(function () {
Route::get('/profile', function () {
return view('profile');
});
});
6️⃣ Middleware Parametreleri
Middleware’lere parametre göndermek de mümkündür. Örneğin, yaş kontrolü yapan bir Middleware’e farklı yaş sınırları gönderebilirsiniz.
Örnek: Parametreli Middleware
public function handle(Request $request, Closure $next, $age)
{
if ($request->age < $age) {
return redirect('home');
}
return $next($request);
}
Route üzerinde parametre göndermek için:
Route::get('/profile', function () {
return view('profile');
})->middleware('checkAge:21');
Bu örnekte, kullanıcının yaşı 21’den küçükse home
sayfasına yönlendirilir.
7️⃣ Middleware’in SEO’ya Etkisi
Middleware, doğrudan SEO ile ilişkili değildir. Ancak, dolaylı olarak SEO’ya katkıda bulunabilir. Örneğin:
- Güvenlik: Middleware ile yapılan güvenlik kontrolleri, web sitenizin güvenliğini artırarak arama motorlarının güvenini kazanmanızı sağlar.
- Kullanıcı Deneyimi: Middleware ile yapılan yönlendirmeler, kullanıcıların doğru sayfalara erişmesini sağlar. Bu, kullanıcı deneyimini artırarak SEO’ya olumlu katkıda bulunur.
- Hız ve Performans: Middleware ile yapılan optimizasyonlar, web sitenizin hızını artırabilir. Hızlı web siteleri, arama motorları tarafından daha üst sıralarda yer alır.
Sonuç
Laravel Middleware, HTTP isteklerini filtrelemek ve kontrol etmek için güçlü bir araçtır. Kullanıcı yetkilendirme, güvenlik işlemleri ve veri doğrulama gibi birçok alanda kullanılabilir. Middleware’i route’lara veya global olarak uygulayabilir, hatta parametrelerle özelleştirebilirsiniz. Middleware, doğrudan SEO ile ilişkili olmasa da, dolaylı olarak web sitenizin güvenliğini, kullanıcı deneyimini ve performansını artırarak SEO’ya katkıda bulunabilir.
Laravel Middleware’i etkili bir şekilde kullanarak, web uygulamalarınızı daha güvenli, düzenli ve verimli hale getirebilirsiniz.
Laravel Eğitimi Konular
- Laravel Nedir ve Neden Kullanılmalı?
- Laravel Kurulumu (Composer ile Adım Adım Rehber)
- Laravel Proje Yapısı ve MVC Mimarisi
- Laravel Routing ve Controller Kullanımı
- Laravel Middleware Kullanımı
- API isteklerinde middleware kullanımı
- Laravel Migration ve Seeder Kullanımı
- Laravel Factory ve Faker ile Test Verisi Üretme
- Laravel’de API Kullanımı ve Token Bazlı Authentication
- Laravel Rol ve Yetkilendirme İşlemleri
- Laravel’de Cache ve Performans Optimizasyonu
- Laravel’de Queue (Kuyruk) Kullanımı ve Arka Plan İşlemleri
- Laravel Event & Listener Kullanımı
- Laravel’de Scheduler (Zamanlanmış Görevler) Kullanımı: Otomatik İşlemler ve Zaman Yönetimi
- Laravel’de Test Driven Development (TDD) ve Test Yazımı