fikretyn
Üye
Middleware'in Temel İşlevleri
- HTTP İsteklerini İşleme:Middleware, gelen HTTP isteklerini işleyerek önceden belirlenmiş işlemleri gerçekleştirebilir. Örneğin, bir oturum kontrolü yapabilir veya gelen isteği loglayabilir.
- İstekleri Manipüle Etme:Middleware, gelen istekleri değiştirebilir veya manipüle edebilir. Örneğin, bir HTTP başlığı ekleyebilir veya kaldırabilir.
- HTTP İsteklerini Denetleme:Middleware, belirli koşullara dayanarak istekleri denetleyebilir ve belirli durumlarda isteği reddedebilir veya yönlendirebilir.
- HTTP Yanıtlarını İşleme:Middleware, uygulamanın gönderdiği HTTP yanıtlarını da işleyebilir. Örneğin, yanıtlara ek bilgi ekleyebilir veya yanıtları cache'leyebilir.
Laravel Middleware Kullanımı
Laravel'de middleware'ler, app/Http/Middleware dizininde yer alır. Bu middleware'ler, HTTP kernel'ın içinde tanımlanır ve ardından route'lar veya controller'lar tarafından kullanılabilir.1 - Öntanımlı Middleware'ler:Laravel, otomatik olarak Cross-Origin Resource Sharing (CORS), oturum yönetimi ve güvenlik önlemleri gibi yaygın kullanılan middleware'leri içerir.
2 - Kendi Middleware'lerinizi Oluşturma:Kendi middleware'lerinizi oluşturarak, uygulamanıza özgü işlemleri gerçekleştirebilirsiniz. Bunun için artisan komutu kullanılır.
PHP:
php artisan make:middleware CheckAge
3 - Middleware Tanımlama:Middleware sınıfı oluşturulduktan sonra, işlemleri handle metodunda tanımlanır.
PHP:
<?php
namespace App\Http\Middleware;
use Closure;
class CheckAge
{
public function handle($request, Closure $next)
{
if ($request->age <= 18) {
return redirect('home');
}
return $next($request);
}
}
4 - Middleware Kullanımı:Middleware, route tanımlamasında veya controller içinde kullanılabilir.
PHP:
Route::get('profile', function () {
//
})->middleware('auth');
// veya
Route::get('profile', 'UserController@show')->middleware('auth');
Controller içinde kullanım:
PHP:
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
use App\Http\Middleware\CheckAge;
class UserController extends Controller
{
public function __construct()
{
$this->middleware(CheckAge::class);
}
}