Laravel’de API Kullanımı ve Token Bazlı Kimlik Doğrulama: Laravel Sanctum ile Güvenli API Geliştirme
Laravel, modern web uygulamaları ve mobil uygulamalar için güçlü bir API geliştirme ortamı sunar. Özellikle token bazlı kimlik doğrulama (authentication), kullanıcıların güvenli bir şekilde API’lere erişmesini sağlar. Laravel, bu ihtiyaçları karşılamak için Laravel Sanctum ve Laravel Passport gibi araçlar sunar. Bu makalede, Laravel Sanctum kullanarak token bazlı kimlik doğrulama işlemlerini nasıl gerçekleştireceğinizi adım adım öğreneceksiniz.
1️⃣ API Nedir ve Neden Kullanılır?
API (Application Programming Interface), farklı uygulamaların birbiriyle iletişim kurmasını sağlayan bir arayüzdür. API’ler, özellikle mobil uygulamalar, mikroservisler veya farklı platformlar arasında veri alışverişi yapmak için kullanılır. Laravel ile API geliştirmek, bu tür senaryolarda oldukça kullanışlıdır.
Token Bazlı Kimlik Doğrulama
Token bazlı kimlik doğrulama, kullanıcı adı ve şifre gibi geleneksel yöntemler yerine, API token’ları kullanarak güvenli bir doğrulama süreci sağlar. Bu yöntem, özellikle stateless (durumsuz) uygulamalarda tercih edilir ve kullanıcı oturumlarını yönetmek için idealdir.
2️⃣ Laravel Sanctum Nedir?
Laravel Sanctum, API kimlik doğrulaması için hafif ve kolay bir çözüm sunar. Sanctum, özellikle SPA (Single Page Application) ve mobil uygulamalar için token bazlı kimlik doğrulama sağlar. Sanctum’un avantajları şunlardır:
- Hafif ve Hızlı: Sanctum, minimal bir yapı sunar ve performans kaybı yaşatmaz.
- Token Yönetimi: Kullanıcılar için API token’ları oluşturur ve yönetir.
- Güvenlik: Token’ların güvenli bir şekilde saklanmasını ve kullanılmasını sağlar.
3️⃣ Laravel Sanctum Kurulumu
Laravel Sanctum’u projenize eklemek oldukça kolaydır. İşte adım adım kurulum süreci:
Adım 1: Sanctum Paketini Yükleme
Sanctum’u projenize eklemek için aşağıdaki komutu çalıştırın:
composer require laravel/sanctum
Adım 2: Sanctum Konfigürasyon Dosyasını Yayınlama
Sanctum’un konfigürasyon dosyasını yayınlamak için:
php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"
Bu komut, config/sanctum.php
dosyasını oluşturur.
Adım 3: Migration Dosyalarını Çalıştırma
Sanctum’un gerekli tablolarını oluşturmak için migration’ları çalıştırın:
php artisan migrate
Bu komut, personal_access_tokens
tablosunu oluşturur. Bu tablo, kullanıcıların API token’larını saklar.
Adım 4: User Modeline HasApiTokens Trait’ini Ekleme
User
modeline HasApiTokens
trait’ini ekleyerek, kullanıcıların API token’ları oluşturmasını sağlayabilirsiniz:
use Laravel\Sanctum\HasApiTokens;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
use HasApiTokens, Notifiable;
}
Adım 5: Middleware Ayarları
Sanctum’u API isteklerinde kullanabilmek için api
middleware grubuna ekleyin. app/Http/Kernel.php
dosyasına aşağıdaki satırı ekleyin:
use Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful;
protected $middlewareGroups = [
'api' => [
EnsureFrontendRequestsAreStateful::class,
'throttle:api',
\Illuminate\Routing\Middleware\SubstituteBindings::class,
],
];
4️⃣ Kullanıcı Kayıt ve Giriş API’leri
Laravel Sanctum ile kullanıcı kaydı, giriş ve çıkış işlemlerini gerçekleştirmek için bir AuthController
oluşturabilirsiniz. Bu controller, kullanıcı kaydı, giriş ve çıkış işlemlerini yönetir.
Kullanıcı Kaydı
Kullanıcı kaydı işlemi için, kullanıcı bilgilerini alır ve bir API token’ı oluşturur. Bu token, kullanıcının API’ye erişimini sağlar.
Kullanıcı Girişi
Kullanıcı girişi işlemi, kullanıcının e-posta ve şifresini doğrular ve bir API token’ı döndürür.
Kullanıcı Çıkışı
Kullanıcı çıkışı işlemi, kullanıcının token’ını siler ve oturumu sonlandırır.
5️⃣ API Route’larını Tanımlama
API route’larını tanımlamak için routes/api.php
dosyasını kullanabilirsiniz. Örneğin, kullanıcı kaydı, giriş ve çıkış işlemleri için aşağıdaki route’ları tanımlayabilirsiniz:
use App\Http\Controllers\AuthController;
Route::post('/register', [AuthController::class, 'register']);
Route::post('/login', [AuthController::class, 'login']);
Route::middleware('auth:sanctum')->group(function () {
Route::post('/logout', [AuthController::class, 'logout']);
Route::get('/user', function (Request $request) {
return $request->user();
});
});
Bu route’lar, kullanıcı kaydı, giriş, çıkış ve kullanıcı bilgilerini döndürme işlemlerini gerçekleştirir.
6️⃣ API Testi Yapma
API’yi test etmek için Postman veya cURL gibi araçlar kullanabilirsiniz. Örneğin, kullanıcı kaydı ve giriş işlemlerini test etmek için aşağıdaki cURL komutlarını kullanabilirsiniz:
Kullanıcı Kaydı İçin:
curl -X POST http://127.0.0.1:8000/api/register \
-H "Content-Type: application/json" \
-d '{"name": "Ali", "email": "[email protected]", "password": "password"}'
Kullanıcı Girişi İçin:
curl -X POST http://127.0.0.1:8000/api/login \
-H "Content-Type: application/json" \
-d '{"email": "[email protected]", "password": "password"}'
Token ile Korunan Sayfaya Erişim İçin:
curl -X GET http://127.0.0.1:8000/api/user \
-H "Authorization: Bearer TOKEN_BURAYA_GELECEK"
Çıkış Yapmak İçin:
curl -X POST http://127.0.0.1:8000/api/logout \
-H "Authorization: Bearer TOKEN_BURAYA_GELECEK"
7️⃣ Token Süresi ve Güvenlik Ayarları
Sanctum’un token’ları varsayılan olarak süresizdir. Ancak, token süresini belirlemek için config/sanctum.php
dosyasında aşağıdaki ayarı yapabilirsiniz:
'expiration' => 60, // 60 dakika sonra token süresi dolacak
Önerilen Güvenlik Önlemleri:
- Rate Limiting: API isteklerine sınırlama getirin.
- HTTPS: API’nizi HTTPS üzerinden kullanın.
- CORS Ayarları: CORS (Cross-Origin Resource Sharing) ayarlarını doğru yapılandırın.
8️⃣ Sonuç
Laravel Sanctum, token bazlı kimlik doğrulama işlemleri için hafif ve kullanışlı bir çözüm sunar. Bu makalede, Laravel Sanctum ile kullanıcı kaydı, giriş ve çıkış işlemlerini nasıl gerçekleştireceğinizi öğrendiniz. Ayrıca, API’nizi nasıl test edeceğinizi ve token güvenliği için alınabilecek önlemleri incelediniz.
Eğer Laravel ile API geliştiriyorsanız, Sanctum’u kullanarak güvenli ve ölçeklenebilir bir kimlik doğrulama sistemi oluşturabilirsiniz.
Laravel Eğitimi Konular
- Laravel Nedir ve Neden Kullanılmalı?
- Laravel Kurulumu (Composer ile Adım Adım Rehber)
- Laravel Proje Yapısı ve MVC Mimarisi
- Laravel Routing ve Controller Kullanımı
- Laravel Middleware Kullanımı
- API isteklerinde middleware kullanımı
- Laravel Migration ve Seeder Kullanımı
- Laravel Factory ve Faker ile Test Verisi Üretme
- Laravel’de API Kullanımı ve Token Bazlı Authentication
- Laravel Rol ve Yetkilendirme İşlemleri
- Laravel’de Cache ve Performans Optimizasyonu
- Laravel’de Queue (Kuyruk) Kullanımı ve Arka Plan İşlemleri
- Laravel Event & Listener Kullanımı
- Laravel’de Scheduler (Zamanlanmış Görevler) Kullanımı: Otomatik İşlemler ve Zaman Yönetimi
- Laravel’de Test Driven Development (TDD) ve Test Yazımı