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
) vehandle
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 veyaconfig
klasöründekiapp.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.