Laravel Middleware Kullanımı

Yasin DALKILIÇ
2 min readMar 6, 2021

--

Laravel Middleware

Herkese merhabalar , bu yazımızda sizlerle beraber laravel ile beraber middleware oluşturma işlemlerine göz atıyor olacağız.

Öncelikle nedir bu middleware diyecek olursak, middleware ismindende anlaşılabileceği gibi aslında bir ara katman bir ara yazılım bir ara işlem gibi düşünebiliriz. Ne demek istiyoruz örneğin biz havaalanından geçmek istiyoruz ve orada ilgili xray cihazlarından , yahutta çeşitli kimlik kontrollerinden geçip o şekilde bekleme salonuna doğru yada uçağımıza geçiyoruz. İşte middlewareler de tam olarak bu controllerımıza istek gelmeden önce çeşitli kontrollerden geçirip daha sonra ilgili controllerlara yönlendirilmesi işlemi.

Şimdi şöyle bir örnek yapalım, örneğin bizim endpointlerimize yalnızca yaşı 20 den büyük olan ve adı ahmet olan kullanıcılar istek yapabilsin diğer kullanıcıların istekleri red edilsin. O zaman hadi başlayalım.

Proje Oluşturma

composer create-project laravel/laravel example-app
cd example-app
php artisan serve

Middleware Oluşturma

php artisan make:middleware AgeControlMiddleware
php artisan make:middleware NameControlMiddleware

dedikten sonra oluşan age ve name control middlewarelerimiz app\http\Middleware altında bulabiliriz.

Şimdi age middleware kodlayalım;

<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
class AgeControlMiddleware
{
public function handle(Request $request, Closure $next)
{
if($request->age>20){
return $next($request);
}else{
return response()->json('Yaşınız 20den kucuk oldugun için bir yere gidemezsiniz',400);
}}}

öncelikle request içerisindeki age field ele alıp basit bir yaş kontrolü yapıyoruz, eğer yaş 20 den büyükse $next diyerek mevcut request ile birlikte geçmesine izin veriyoruz, hayır 20 den küçük ise geriye response döndürüyoruz.

Şimdi name middleware kodlayalım ;

<?php
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
class NameControlMiddleware
{
public function handle(Request $request, Closure $next)
{
if($request->name=="ahmet"){
return $next($request);
}else{
return response()->json("İsminiz Ahmet Değil Geçemezsiniz", 400);
}}}

age middleware de olduğu gibi buradada $request içerisindeki name field kontrol edip isim ahmet ise geçmesine izin verip , değil ise geçemeyeceğini belirtiyoruz.

İlgili middlewareleri oluşturduk, fakat Laravelin bundan haberi henüz yok, işte bunun için laravele gelip hey Laravel ben iki tane middleware sahibim seninde bundan haberin olsun demek için app\http\Kernel içerisinde gidip

protected $routeMiddleware = ['age'=>\App\Http\Middleware\AgeControlMiddleware::class,'name'=>\App\Http\Middleware\NameControlMiddleware::class,...];

yazmış olduğumuz middleware register ediyoruz. Artık middlewarelar kullanıma hazır.

routes\api içerisine gelip basitçe test adında bir endpoint oluşturuyorum ve içerisinde sırayla age ve name middleware kontrolünden geçeceğini belirtiyorum, burada dikkat etmemiz gereken şey ilgili kontrollerin(middlewareların) sırasıyla tetikleneceği

Route::post('/test',function (Request  $request){return response()->json('Yaş ve Ad  Kontrolünden Başarıyla Geçtiniz',200);})->middleware(['age','name']);

son olarak tek yapmamız gereken şey ise ilgili endpointe istek atmak;

Middlewareden Geçen
Middlewareden Geçemeyen

Herkese İyi Çalışmalar Dilerim.

--

--

Yasin DALKILIÇ
Yasin DALKILIÇ

Written by Yasin DALKILIÇ

Hi, My name is Yasin I am a Software Developer, I love so much researching and development 😊 Here is my youtube channel @webciyasin