Web Doktoru - Laravel’de API Kullanımı ve Token Bazlı Authentication
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.
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, 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.
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:
Laravel Sanctum’u projenize eklemek oldukça kolaydır. İşte adım adım kurulum süreci:
Sanctum’u projenize eklemek için aşağıdaki komutu çalıştırın:
composer require laravel/sanctum
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.
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.
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;
}
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,
],
];
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ı 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 işlemi, kullanıcının e-posta ve şifresini doğrular ve bir API token’ı döndürür.
Kullanıcı çıkışı işlemi, kullanıcının token’ını siler ve oturumu sonlandırır.
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.
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:
curl -X POST http://127.0.0.1:8000/api/register \
-H "Content-Type: application/json" \
-d '{"name": "Ali", "email": "ali@example.com", "password": "password"}'
curl -X POST http://127.0.0.1:8000/api/login \
-H "Content-Type: application/json" \
-d '{"email": "ali@example.com", "password": "password"}'
curl -X GET http://127.0.0.1:8000/api/user \
-H "Authorization: Bearer TOKEN_BURAYA_GELECEK"
curl -X POST http://127.0.0.1:8000/api/logout \
-H "Authorization: Bearer TOKEN_BURAYA_GELECEK"
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
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’de Real-Time (Gerçek Zamanlı) Bildirimler Laravel, modern web uygulamalarında gerçek zamanlı bildirimler oluşturmak için güçlü…
Laravel’de Mail Gönderme ve Bildirimler Laravel, modern web uygulamaları geliştirirken e-posta gönderimi ve bildirim sistemleri…
Laravel, dosya yükleme ve depolama işlemleri için güçlü bir Storage (Dosya Depolama) mekanizması sunar. Bu mekanizma, yerel…
Laravel’de Çoklu Dil (Localization) Kullanımı: Uygulamanızı Küresel Hale Getirin 🌍 Laravel, modern web uygulamaları için…
Laravel’de Test Driven Development (TDD) ve Test Yazımı: Güvenilir ve Sürdürülebilir Kod Geliştirme Laravel, modern…
Laravel’de Scheduler (Zamanlanmış Görevler) Kullanımı: Otomatik İşlemler ve Zaman Yönetimi Laravel, modern web uygulamalarında belirli…