Problem Özeti
Basit Anlatım
Kullanıcılar giriş yaptıktan sonra aniden "Oturum Süresi Doldu" hatası alıyor. Sayfa yenilendiğinde veya başka bir sayfaya geçildiğinde oturum kayboluyor. Sorun: Cookie ayarlarında ciddi tutarsızlıklar var.
Teknik Özet
- Cookie domain:
www.muzibu.comvs.muzibu.com - Cookie name:
laravel_session_1001vstenant_1001_session - Redis prefix: Tenant prefix uygulanmıyor
- Memory fragmentation: 2.75 (düzeltilmiş)
Cookie Domain Tutarsızlığı
KRİTİKBasit Anlatım
Cookie domain www.muzibu.com olarak ayarlanıyor.
Bu demek ki sadece www.muzibu.com'da çalışır.
Kullanıcı muzibu.com'a gittiğinde oturumu kaybolur!
Teknik Detay
domain=www.muzibu.com
domain=.muzibu.com
Kanıt (curl çıktısı):
set-cookie: laravel_session_1001=...; domain=www.muzibu.com; secure; httponly
Beklenen: domain=.muzibu.com (leading dot ile tüm subdomain'lerde çalışır)
Cookie Name Karışıklığı
KRİTİKBasit Anlatım
Sistem bazen laravel_session_1001, bazen tenant_1001_session cookie adı kullanıyor.
Kullanıcıların tarayıcılarında her iki cookie de var - bu ciddi karışıklığa neden oluyor!
Teknik Detay
Kullanıcılarda görülen cookie'ler:
tenant_1001_session(yeni, doğru)laravel_session_1001(eski, çakışıyor)muzibu_session(çok eski)
Sonuç: SetTenantSessionConfig middleware tenant_1001_session ayarlıyor ama
login sayfası hâlâ laravel_session_1001 set ediyor.
Redis Session Prefix Sorunu
YÜKSEKBasit Anlatım
Redis'e kaydedilen session key'leri tenant prefix'i olmadan saklanıyor. Bu, farklı tenant'ların session'larının karışmasına neden olabilir.
Teknik Detay
session_XXX
tenant_1001_session_XXX
Redis key örnekleri:
session_32cJXToBcGZERaPoEH6iS34ULxJFicAizlMD5pEg session_zp25zPCOe5XQKE3gTF0qhppzdkM4TVBHLvHyDxhU session_I9j0CohQDhWUTRA9gJNKkbYt5LL2F0itBZxj3Azt
Sistem Metrikleri
Cookie Akış Sorunu
Kullanıcı www.muzibu.com/login sayfasına gelir
Sistem laravel_session_1001 cookie'si set eder (domain: www.muzibu.com)
SetTenantSessionConfig middleware tenant_1001_session cookie'si set eder (domain: .muzibu.com)
ÇAKIŞMA: İki farklı cookie, iki farklı domain - hangi session geçerli belirsiz!
Sayfa yenilendiğinde veya AJAX isteklerinde session uyuşmazlığı → 419 Page Expired
Etkilenen Dosyalar
| Dosya | Sorun | Öncelik |
|---|---|---|
app/Http/Middleware/SetTenantSessionConfig.php |
Cookie config timing sorunu | Kritik |
app/Providers/TenancyServiceProvider.php |
Redis session prefix çalışmıyor | Yüksek |
config/session.php |
Cookie name config | Yüksek |
.env |
SESSION_DOMAIN ayarı | Orta |
AI Browser Agent Test Prompt
Bu prompt'u AI Browser Agent'a vererek detaylı test yapılabilir:
## Muzibu Session/Cookie Test Görevi **Amaç:** Login sonrası session kaybı ve cookie tutarsızlıklarını tespit etmek. **Test Hesabı:** - URL: https://www.muzibu.com/login - Email: nurullah@nurullah.net - Şifre: g0nulcelen **Test Adımları:** ### 1. PRE-LOGIN KONTROLLER - https://www.muzibu.com/login sayfasına git - Browser DevTools → Application → Cookies aç - Mevcut tüm cookie'leri listele ve raporla - Özellikle şu cookie'leri ara: tenant_1001_session, laravel_session_1001, muzibu_session, XSRF-TOKEN ### 2. LOGIN İŞLEMİ - Email ve şifreyi gir - Login butonuna tıkla - Redirect sonrası sayfanın tam yüklenmesini bekle ### 3. POST-LOGIN COOKIE ANALİZİ - DevTools → Cookies'i tekrar kontrol et - Her cookie için şunları raporla: - Cookie adı - Domain (önemli: www.muzibu.com mu, .muzibu.com mu?) - Path - Expires - HttpOnly durumu - Secure durumu ### 4. SESSION TESTİ - Ana sayfada F5 ile sayfayı yenile - Hâlâ giriş yapmış mı kontrol et - Header'daki kullanıcı adını/profil ikonunu kontrol et ### 5. NAVIGATION TESTİ - Sol menüden "Şarkılar" linkine tıkla - Şarkılar sayfası yüklensin - Hâlâ giriş yapmış mı kontrol et - "Albümler" sayfasına git - Hâlâ giriş yapmış mı kontrol et ### 6. API REQUEST TESTİ - DevTools → Network sekmesini aç - XHR/Fetch filtrele - Herhangi bir sayfada bekle (favoriler, playlist vs.) - API isteklerinin response'larını kontrol et - 401 veya 419 hatası var mı? ### 7. TIMEOUT TESTİ - Sayfada 2-3 dakika bekle (hiçbir şey yapma) - Sonra herhangi bir butona tıkla veya sayfayı yenile - "Oturum Süresi Doldu" hatası alındı mı? ### 8. CONSOLE HATALARI - DevTools → Console sekmesini aç - Kırmızı (error) logları listele - Özellikle "419", "CSRF", "session", "expired" içeren hataları raporla ### 9. REQUEST HEADERS - Herhangi bir sayfaya geçerken Network sekmesinde ilk HTML isteğini bul - Request Headers'da "Cookie" header'ını kontrol et - Hangi session cookie'si gönderiliyor? ### 10. SONUÇ RAPORU Şu başlıklarda rapor hazırla: - [ ] Login başarılı mı? - [ ] Cookie domain doğru mu? (.muzibu.com olmalı) - [ ] Cookie name tutarlı mı? (tenant_1001_session olmalı) - [ ] Session sayfa yenilemesinde korunuyor mu? - [ ] Navigasyon sırasında session korunuyor mu? - [ ] API isteklerinde hata var mı? - [ ] Console'da session/CSRF hatası var mı? - [ ] Timeout sonrası session hâlâ geçerli mi? **Ek Notlar:** - Her adımda screenshot al - Herhangi bir hata görürsen detaylı açıkla - Cookie değerlerini tamamen değil, ilk 20 karakterini yaz (güvenlik) - "Oturum Süresi Doldu" modal'ı görürsen hemen bildir
Olası Çözüm Yolları
.env SESSION_DOMAIN Düzeltmesi
SESSION_DOMAIN'i leading dot ile ayarla:
SESSION_DOMAIN=.muzibu.com
Cookie Name Standardizasyonu
Tek bir cookie adı kullan, eski cookie'leri temizle:
SESSION_COOKIE=tenant_1001_session
SetTenantSessionConfig Timing Fix
Middleware'in session başlamadan ÖNCE config'i ayarladığından emin ol.
Eski Cookie Cleanup
SetTenantSessionConfig'de laravel_session_1001 cookie'sini de expire listesine ekle.