Merhaba arkadaşlar, bugün sizlere Laravel’de Middleware kullanımı ve bu yapıyı nasıl özelleştirebileceğinizi anlatacağım. Middleware, Laravel’de HTTP isteklerini filtrelemek ve bu isteklere müdahale etmek için kullanılan güçlü bir araçtır. Eğer uygulamanızda güvenlik, yetkilendirme veya loglama gibi işlemler yapmak istiyorsanız, Middleware tam size göre! Gelin, bu konuyu adım adım inceleyelim.
Middleware, HTTP isteklerinin uygulamanıza ulaşmadan önce veya uygulamanızdan çıktıktan sonra bu isteklere müdahale etmenizi sağlayan bir yapıdır. Örneğin, bir kullanıcının giriş yapıp yapmadığını kontrol etmek veya belirli bir IP adresinden gelen istekleri engellemek için Middleware kullanabilirsiniz.
Middleware Oluşturma
Yeni bir Middleware oluşturmak için aşağıdaki komutu kullanabilirsiniz:
php artisan make:middleware CheckAge
Bu komut, app/Http/Middleware dizini altında CheckAge.php adında bir Middleware dosyası oluşturacaktır.
Middleware’i Düzenleme
Oluşturduğunuz Middleware dosyasını açın ve handle metodunu düzenleyin. Örneğin, kullanıcının yaşını kontrol eden bir Middleware yazalım:
public function handle($request, Closure $next){ if ($request->age < 18) { return redirect('home'); } return $next($request);}
Bu Middleware, kullanıcının yaşı 18’den küçükse home sayfasına yönlendirme yapacaktır.
Middleware’i Kaydetme
Middleware’i kullanabilmek için önce app/Http/Kernel.php dosyasında kaydetmeniz gerekiyor. $routeMiddleware dizisine Middleware’inizi ekleyin:
protected $routeMiddleware = [ 'check.age' => \App\Http\Middleware\CheckAge::class,];
Middleware’i Route’larda Kullanma
Middleware’i route’larda kullanmak için aşağıdaki gibi tanımlayabilirsiniz:
Route::get('/dashboard', function () { // Sadece 18 yaş ve üstü kullanıcılar erişebilir})->middleware('check.age');
Global Middleware
Eğer bir Middleware’in tüm HTTP isteklerinde çalışmasını istiyorsanız, bunu $middleware dizisine ekleyebilirsiniz:
protected $middleware = [ \App\Http\Middleware\CheckAge::class,];
Middleware Özelleştirme
Laravel, Middleware’leri özelleştirmek için birçok esneklik sunar. İşte bazı özelleştirme örnekleri:
Parametreli Middleware
Middleware’lere parametre gönderebilirsiniz. Örneğin, yaş kontrolü için parametre alan bir Middleware yazalım:
public function handle($request, Closure $next, $age){ if ($request->age < $age) { return redirect('home'); } return $next($request);}
Bu Middleware’i route’da şu şekilde kullanabilirsiniz:
Route::get('/dashboard', function () { // Sadece 21 yaş ve üstü kullanıcılar erişebilir})->middleware('check.age:21');
Gruplama
Birden fazla Middleware’i gruplayarak tek bir isim altında kullanabilirsiniz. Örneğin, web grubuna Middleware’ler ekleyebilirsiniz:
protected $middlewareGroups = [ 'web' => [ \App\Http\Middleware\EncryptCookies::class, \App\Http\Middleware\VerifyCsrfToken::class, ],];
Bu grubu route’larda şu şekilde kullanabilirsiniz:
Route::middleware('web')->group(function () { Route::get('/profile', function () { // Web Middleware grubu bu route için geçerli });});
Laravel’de Middleware kullanımı, HTTP isteklerini filtrelemek ve bu isteklere müdahale etmek için güçlü bir araçtır. Eğer uygulamanızda güvenlik, yetkilendirme veya loglama gibi işlemler yapmak istiyorsanız, Middleware’leri etkili bir şekilde kullanabilirsiniz. Bir sonraki yazımda, Laravel ile Real-Time Uygulamalar: Pusher ve WebSocket Entegrasyonu konusuna değineceğim. Görüşmek üzere!