Laravel Custom Middleware ile API Key Authentication

Laravel’da özel bir API anahtarı (API key) tabanlı yetkilendirme mekanizması oluşturmak için, özel bir middleware kullanabilirsiniz. Kullanıcı bazlı yetkilendirme mekanizması kullanmak istemeyip, genel bir api key tanımlayarak da verilerinizin yetkilendirilmemiş isteklere karşı koruyabilirsiniz.

  • Middleware Oluşturma: Öncelikle, özel bir middleware oluşturun. Aşağıdaki komutu kullanarak Laravel Artisan komut satırında yeni bir middleware oluşturabilirsiniz.
php artisan make:middleware ApiKeyMiddleware

Bu komut, ApiKeyMiddleware adında yeni bir middleware sınıfı oluşturacaktır.

  • Middleware’ı Güncelleme: Oluşturulan middleware sınıfını açın (App\Http\Middleware\ApiKeyMiddleware) ve handle fonksiyonunu güncelleyin. API anahtarını kontrol edeceğimiz bu fonksiyonu aşağıdaki gibi düzenleyebilirsiniz:
<?php

namespace App\Http\Middleware;

use Closure;

class ApiKeyMiddleware
{
    public function handle($request, Closure $next)
    {
        $apiKey = $request->header('API-Key');

        if (!$apiKey || $apiKey !== config('app.api_key')) {
            return response()->json(['error' => 'Unauthorized'], 401);
        }

        return $next($request);
    }
}

Bu örnekte, API-Key başlığını kontrol ediyoruz ve bu başlık, config('app.api_key') ile tanımlanan anahtarla eşleşmiyorsa 401 hatası döndürüyoruz.

  • Middleware’ı Rota Grubuna Eklemek: Middleware’ınızı bir rota grubuna ekleyerek, bu rotalara erişim sağlamadan önce API anahtarını kontrol edebilirsiniz.

routes/api.php dosyasında şu şekilde bir grup oluşturabilirsiniz:

Route::group(['middleware' => 'api.key'], function () {
    // API rotalarınız buraya gelecek
    Route::get('/example', 'ApiController@example');
});

  • API Anahtarını Konfigüre Etme: Laravel’da genellikle konfigürasyon dosyalarını kullanarak değişkenleri saklarız. .env dosyanıza veya config klasöründeki app.php dosyanıza API anahtarınızı ekleyin:

.env dosyasında:

API_KEY=your_api_key_here

Daha sonra, config/app.php dosyasında:

'api_key' => env('API_KEY'),

Bu adımları takip ederek, Laravel uygulamanızda özel bir API anahtarı tabanlı yetkilendirme mekanizması oluşturabilirsiniz. Güvenlik için HTTPS kullanmaya dikkat etmeyi unutmayın.

Yorum yapın