Laravel Sanctum, Laravel tarafından sunulan hafif ve modern bir kimlik doğrulama paketi olup hem API’ler hem de Tek Sayfa Uygulamaları (SPA) için güçlü bir kimlik doğrulama çözümü sağlar. Bu makalede, Sanctum’u kurma, yapılandırma ve çeşitli kullanım senaryolarını ele alacağız.
Laravel Sanctum Nedir?
Laravel Sanctum, Laravel uygulamaları için API token tabanlı kimlik doğrulama ve SPA oturum yönetimi sağlar. Sanctum, kullanıcıların kişisel erişim token’ları oluşturmasına olanak tanır ve bu token’lar, uygulamanızdaki API uç noktalarına erişim için kullanılır. JWT gibi karmaşık çözümlere kıyasla daha basit bir yapı sunar.
Laravel Sanctum Avantajları
- Basit Kurulum ve Kullanım: Laravel ile sorunsuz entegre olur. Karmaşık JWT konfigürasyonlarına gerek kalmaz.
- CSRF Koruması: Sanctum, SPA’ler için oturum tabanlı kimlik doğrulama sunar ve bu sayede CSRF saldırılarına karşı koruma sağlar.
- Token Yönetimi: Kullanıcılar için birden fazla erişim token’ı oluşturabilir, her biri için farklı izinler tanımlayabilirsiniz.
Sanctum Kurulumu
Laravel Sanctum’u bir projede kullanmaya başlamak oldukça kolaydır.
1. Sanctum’u Yükleyin
Aşağıdaki komutla Sanctum’u projenize ekleyin:
composer require laravel/sanctum
2. Yapılandırma ve Migration
Sanctum’un yapılandırma dosyalarını yayınlayın:
php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"
Veritabanı tablolarını oluşturun:
php artisan migrate
3. Middleware Ayarları
config/api.php
dosyasındaki middleware’e Sanctum’u ekleyin:
'api' => [
\Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,
'throttle:api',
\Illuminate\Routing\Middleware\SubstituteBindings::class,
],
Token Tabanlı Kimlik Doğrulama
Token tabanlı kimlik doğrulama, API istemcilerinin kullanıcı adına işlem yapmasına olanak tanır.
Token Oluşturma
Bir kullanıcı için erişim token’ı oluşturabilirsiniz:
$user = User::find(1);
$token = $user->createToken('MyAppToken')->plainTextToken;
return response()->json(['token' => $token]);
Token Kullanımı
API taleplerinde, aşağıdaki gibi Authorization
başlığı kullanılarak token gönderilir:
Authorization: Bearer <token>
Kimlik Doğrulama Gerektiren Uç Noktalar
auth:sanctum
middleware’ini kullanarak belirli uç noktaları koruyabilirsiniz:
Route::middleware('auth:sanctum')->get('/user', function (Request $request) {
return $request->user();
});
SPA Oturum Yönetimi
Laravel Sanctum, SPA’ler için oturum bazlı kimlik doğrulama sağlar. Bu, frontend uygulamalarının bir API ile güvenli bir şekilde iletişim kurmasını sağlar.
CSRF Koruması
Laravel, SPA’ler için otomatik olarak CSRF token oluşturur. SPA’lerin Sanctum’u kullanabilmesi için öncelikle bu token alınmalıdır:
axios.get('/sanctum/csrf-cookie').then(response => {
// CSRF cookie alındıktan sonra giriş yapılabilir
axios.post('/login', {
email: '[email protected]',
password: 'password'
});
});
Örnek Kullanım Senaryosu
Laravel Sanctum kullanarak basit bir API kimlik doğrulama sistemi oluşturmak için aşağıdaki adımları izleyebilirsiniz:
- Kullanıcı Kaydı
Kullanıcılar,POST /register
uç noktası üzerinden kayıt olabilir. - Giriş
Kullanıcılar,POST /login
uç noktası ile giriş yapar ve token alır. - Yetkilendirilmiş Erişim
Kullanıcılar, kimlik doğrulaması gerektiren API uç noktalarına yalnızca token ile erişebilir.
Laravel Sanctum’un Sınırları
- Sanctum, basit ve orta ölçekli projeler için idealdir. Daha karmaşık yetkilendirme ve dağıtık yapı gerektiren projelerde Laravel Passport tercih edilebilir.
- Sanctum, sadece Laravel 7.x ve üzeri sürümlerle uyumludur.
Sonuç
Laravel Sanctum, API tabanlı projeler ve SPA’ler için esnek ve güçlü bir kimlik doğrulama çözümü sunar. Basit kurulum süreci ve kullanıcı dostu yapılandırmasıyla, hem yeni başlayanlar hem de deneyimli geliştiriciler için mükemmel bir tercihtir.