Giriş
HTTP Ara Katmanı uygulamanıza gelen HTTP isteklerini filtrelemek için uygun mekanizma sağlar. Örneğin Laravel giriş yapmış kullanıcısını doğrulayan bir ara katman dahil edilmiştir. Kullanıcı doğrulaması başarısızsa ara katman kullanıcıyı giriş ekranına yönlendirir. Ancak, kullanıcı doğrulaması başarılı ise ara katman, isteğin işlenmesine izin verecektir.
Laravel’e bakım modu, kullanıcı doğrulama, CSRF koruması gibi ara katmanlar dahil edilmiştir. Tüm bu ara karmanlar app/Http/Middleware
klasöründedir.
Ara Katman Tanımlama
Yeni bir ara katman oluşturmak için make:middleware
Artisan komutunu kullanın.
1 |
php artisan make:middleware OldMiddleware |
Bu komut app/Http/Middleware
klasörünüze OldMiddleware
sınıfını yerleştirecek. Bu ara katmanda yalızca age
değeri 200 den fazla olduğunda yönlendireceğiz. Aksi kullanıcı “home” adresine geri gönderilecek.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
namespace App\Http\Middleware; use Closure; class OldMiddleware { /** * Run the request filter. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { if ($request->input('age') <= 200) { return redirect('home'); } return $next($request); } } |
Gördüğünüz gibi, verilen age
değeri 200 den küçük veya eşit ise, ara katman kullanıcıyı yönlendirecek; aksi durumda istek uygulamanızda işlenmeye devam edecek. İsteği uygulamanın daha derinlerine geçirmek için, basitçe $next
çağırılır.
Before / After Ara Katmanı
Bir ara katmanın bir istekten önce veya sonra çalışıp çalışmayacağı kendisine bağlıdır. Örnek olarak, aşağıdaki ara katman istek uygulama tarafından işlenmeden önce çalışacak:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
namespace App\Http\Middleware; use Closure; class BeforeMiddleware { public function handle($request, Closure $next) { // Perform action return $next($request); } } |
Fakat, bu ara katman isteğin uygulama tarafından işlendikten sonra çalıştırılacak:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
namespace App\Http\Middleware; use Closure; class AfterMiddleware { public function handle($request, Closure $next) { $response = $next($request); // Perform action return $response; } } |
Ara Katmanın Kaydedilmesi
Genel Ara Katman
Bir ara katmanın uygulamanıza yapılan her HTTP isteğinde çalışmasını istiyorsanız, app/Http/Kernel.php
sınıfınızın $middleware
özelliğinde listeleyin.
Yönlendiricilere Ara Katman Atama
1 2 3 4 5 6 7 |
// Within App\Http\Kernel Class... protected $routeMiddleware = [ 'auth' => \App\Http\Middleware\Authenticate::class, 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, ]; |