Laravel Sanctum Kullanımı

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:

  1. Kullanıcı Kaydı
    Kullanıcılar, POST /register uç noktası üzerinden kayıt olabilir.
  2. Giriş
    Kullanıcılar, POST /login uç noktası ile giriş yapar ve token alır.
  3. 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.