Middleware yani Ara yazılım, uygulamanıza giren HTTP isteklerini incelemek ve filtrelemek için uygun bir mekanizma sağlar.
Örneğin – Laravel, oturum açan kullanıcının kimliği doğrulanmış bir kullanıcı olup olmadığını kontrol edecektir. İsteğin ara yazılımdan geçmesi gerekir. Kimliği doğrulanmış bir kullanıcıysa, kullanıcı geçiş izni alır, aksi takdirde oturumu kapatılır.
Ara yazılım kullanmanın başka bir örneği de yaş sınırlamasıdır. Kullanıcı belirli bir yaş aralığı dışındaysa başka sayfaya aralığı sağlıyorsa başka sayfaya yönlendirebiliriz.
MiddleWare Oluşturma
Aşağıdaki komutu kullanarak ara yazılım oluşturabilirsiniz –
Tüm bu ara yazılımlar, app/Http/Middleware
dizininde bulunur.
1 2 3 | php artisan make:middleware<middleware-adi> |
Hadi yukarıdaki verdiğimiz örnekteki gibi yaş aralığı kontrol eden middleware(arayazılım) örneğini yapalım.
1 2 3 | php artisan make:middleware YasMiddleware |

app/Http/Middleware/YasMiddleware
içine aşağıdaki kodu ekledik.
Ara yazlım üzerinde <h1>...</h1>
etiketleri arasına mesajımızı ekledik. Middleware çalıştığında mesajımız görüntülenecek.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | <?php namespace App\Http\Middleware; use Closure; use Illuminate\Http\Request; class YasMiddleware { /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure(\Illuminate\Http\Request): (\Illuminate\Http\Response|\Illuminate\Http\RedirectResponse) $next * @return \Illuminate\Http\Response|\Illuminate\Http\RedirectResponse */ public function handle(Request $request, Closure $next) { echo "<h1>YasMiddleware çalıştı...</h1>"; return $next($request); } } |
Middleware kullanmak için onu kaydetmemiz gerekir. Üç tür middleware katmanı mevcuttur.
Middleware Kullanımı
Global Middleware, uygulamanın her HTTP isteğinde çalışacak, Route Middleware ise belirli bir rotaya atanacaktır. Ara yazılım, app/Http/Kernel.php
adresinden kaydedilebilir. Bu dosya üç özellik içerir: $middleware
,$middlewareGroups
ve $routeMiddleware
.
$middleware
özelliği Global Middleware’i kaydetmek için kullanılır ve $routeMiddleware
özelliği rotaya özel ara yazılımı kaydetmek için kullanılır.
Global Middleware
$middleware ile global olarak eklerseniz. Tüm sayfalarda geçerli olacaktır.
app/Http/Kernel.php
1 2 3 4 5 6 7 8 9 10 11 12 | protected $middleware = [ // \App\Http\Middleware\TrustHosts::class, \App\Http\Middleware\TrustProxies::class, \Illuminate\Http\Middleware\HandleCors::class, \App\Http\Middleware\PreventRequestsDuringMaintenance::class, \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, \App\Http\Middleware\TrimStrings::class, \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, \App\Http\Middleware\YasMiddleware::class, ]; |

Route Middleware
Belirli yollara ara katman yazılımı atamak istiyorsanız, önce ara katman yazılımına uygulamanızın app/Http/Kernel.php
dosyasında bir anahtar atamanız gerekir. Varsayılan olarak, bu sınıfın $routeMiddleware
özelliği, Laravel’de bulunan ara yazılım için girişler içerir. Bu listeye kendi ara katman yazılımınızı ekleyebilir ve ona istediğiniz bir anahtarı atayabilirsiniz.
Her hangi bir rotaya eklemek için bir anahtar atamanız gerekir. Ardından istediğiniz rotada kullanabilirsiniz.
app/Http/Kernel.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | protected $routeMiddleware = [ 'auth' => \App\Http\Middleware\Authenticate::class, 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, 'auth.session' => \Illuminate\Session\Middleware\AuthenticateSession::class, 'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class, 'can' => \Illuminate\Auth\Middleware\Authorize::class, 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, 'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class, 'signed' => \App\Http\Middleware\ValidateSignature::class, 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, 'yas'=>\App\Http\Middleware\YasMiddleware::class, ]; |
routes/web.php diğer rota bağlantırında da kullabilirsiniz.
1 2 3 4 5 | Route::get('/giris', function () { return view('welcome'); })->middleware(['yas']); |

hocam sosyal medya hesaplarınızı takip etmek istiyorum paylaşabilir misiniz acaba?
yaptığınız bu web sayfası çok kapsamlı ve detaylı öğretici içerikler bulunduruyor , uğraşınız için teşekkürler , emeğinize sağlık. <3
Youtube kanalı mevcut;
https://www.youtube.com/c/TasarımKodlama