Session 419 Fix

Kapsamlı Analiz ve Çözüm Raporu

14 Şubat 2026 • Muzibu.com

Problem Özeti

Basit Anlatım

Bazı kullanıcılar rastgele "Oturum Süresi Doldu" (419) hatası alıyor ve giriş yapamıyorlardı. Sayfa yenilendiğinde bile hata devam ediyordu - kısır döngü.

Teknik Detay

  • Çoklu session cookie çakışması
  • CSRF token mismatch
  • Cookie domain konfigürasyon sorunu
  • Multi-tenant Redis session

Kök Neden Analizi

Çoklu Cookie Sorunu

Kullanıcıların tarayıcısında birden fazla session cookie birikmişti:

laravel_session_1001

Eski format (sorunlu)

muzibu_session

Çok eski format

tenant_1001_session

Doğru format

Kısır Döngü Mekanizması

  1. 1 Kullanıcı birden fazla session cookie'si ile request gönderiyor
  2. 2 CSRF token ile session cookie uyuşmuyor → 419 hatası
  3. 3 419 sayfasında "Yenile" denildiğinde eski cookie'ler hala var
  4. 4 Tekrar 419 → SONSUZ DÖNGÜ

Yapılan Çalışmalar

1. SetTenantSessionConfig Güncelleme

TAMAMLANDI

Eski cookie formatlarını (laravel_session_1001) request'ten kaldırma ve expire etme.

app/Http/Middleware/SetTenantSessionConfig.php

2. SessionCleanupController

TAMAMLANDI

419 durumunda tüm cookie'leri temizleyip login'e yönlendiren endpoint.

app/Http/Controllers/SessionCleanupController.php
Route: /session-cleanup

3. 419 Sayfası Güncelleme

TAMAMLANDI

3 saniye sonra otomatik /session-cleanup'a yönlendirme.

resources/views/errors/419.blade.php

4. Login Form JS Handler

TAMAMLANDI

Login formunda 419 hatası yakalanınca /session-cleanup'a yönlendirme.

resources/views/themes/muzibu/auth/login.blade.php

5. CleanupLegacyCookies Middleware

DEVAM EDİYOR

Her response'ta eski cookie'leri zorla expire eden global middleware.

app/Http/Middleware/CleanupLegacyCookies.php

6. VerifyCsrfToken Override

DENEME AŞAMASI

Laravel 12 ValidateCsrfToken'ı custom class ile değiştirme.

bootstrap/app.php: $middleware->web(replace: [...])

Mevcut Durum

Çözülen Sorunlar

  • ✅ 419 sayfası artık hiç gösterilmiyor
  • ✅ "Oturum Süresi Doldu" mesajı çıkmıyor
  • ✅ Cleanup mekanizması çalışıyor
  • ✅ Temiz cookie ile login sorunsuz

Devam Eden Sorunlar

  • ⚠️ Legacy cookie'ler response'ta expire edilemiyor
  • ⚠️ Session middleware eski cookie adını yeniliyor
  • ⚠️ F5 ile session düşebiliyor (fake cookie varken)

ABA Test Metodolojisi

ABA Nedir?

ABA (AI Browser Agent) - Gerçek tarayıcı ortamında otomatik test yapabilen AI aracı. DevTools ile cookie ekleme, form doldurma, response kontrol etme gibi işlemleri yapabilir.

Test Senaryosu Örneği

1. https://www.muzibu.com/login adresine git
2. DevTools → Application → Cookies aç
3. Fake cookie ekle:
   - laravel_session_1001 = fake123
   - XSRF-TOKEN = fake456
4. Test hesabıyla giriş yap
5. Sonuçları kontrol et:
   - 419 göründü mü?
   - Cookie'ler silindi mi?
   - Session korunuyor mu?
                

Test Sonuçları Özeti

Test v1-v3 v4-v7
419 Sayfası Görünüyor ❌ Evet ✅ Hayır
Login Çalışıyor ❌ Döngü ✅ Tek tık
Cookie Cleanup ❌ Yok ⚠️ Kısmi
F5 Sonrası Session ❌ Düşüyor ⚠️ Bazen

Teknik Detaylar

Değiştirilen Dosyalar

  • • app/Http/Middleware/SetTenantSessionConfig.php
  • • app/Http/Middleware/VerifyCsrfToken.php
  • • app/Http/Middleware/CleanupLegacyCookies.php (YENİ)
  • • app/Http/Controllers/SessionCleanupController.php (YENİ)
  • • bootstrap/app.php
  • • routes/web.php
  • • resources/views/errors/419.blade.php
  • • resources/views/themes/muzibu/auth/login.blade.php

Middleware Sırası

  1. 1. SetTenantSessionConfig (GLOBAL - prepend)
  2. 2. FixResponseCacheHeaders (GLOBAL - append)
  3. 3. CleanupLegacyCookies (GLOBAL - append)
  4. 4. ValidateCsrfToken → VerifyCsrfToken (web replace)

Sonraki Adımlar

1

Cookie Expire Sorununu Çöz

Session middleware'in eski cookie adını yenilemesini engelle

2

Final ABA Testi

Tüm senaryoları kapsamlı test et

3

Debug Logları Temizle

Çözüm onaylandıktan sonra debug loglarını kaldır