Misafir modu (anonim kullanıcılar) nasıl uygulanır ve Logto kullanıcılarına nasıl dönüştürülür
Misafir modunu uygulamayı ve misafir verilerini Logto kullanıcılarına üç aşamalı desenle nasıl aktarabileceğini öğren: misafir oturumlarını yönet, OIDC ile kimlik doğrulama yap ve misafir verilerini kullanıcı hesaplarına güvenli şekilde birleştir.
Birçok uygulama, kullanıcıların kaydolmadan önce özellikleri denemesine izin verir. Sepete ekleme, belge taslakları veya kaydedilmiş tercihler düşün. Kullanıcılar bu "misafir modunun" sorunsuz çalışmasını bekler.
Ama kimlik doğrulaması için Logto (veya başka bir OIDC sağlayıcısı) kullanıyorsan, "bu anonim kullanıcıları nasıl yöneteceğim?" diye düşünebilirsin.
Kısa cevap: Kimlik doğrulamayı Logto yönetir, misafir oturumlarını uygulaman yönetir. Bunlar ayrı konulardır.
Bu yazıda, Logto ile misafir modunu uygulamak için basit bir üç aşamalı desen göstereceğim. Şunları öğrenmiş olacaksın:
- Misafir oturumlarını sunucunda nasıl yönetirsin
- Misafirlerin Logto ile kaydolmasına nasıl izin verirsin
- Misafir verisini gerçek kullanıcı hesabına nasıl birleştirirsin
Logto'da neden "anonim giriş" yok
Logto'nun bir "anonim giriş" özelliği olmasını bekleyebilirsin. Yani şöyle: API'yi çağır, bir token al, kullanıcı etkileşimi yok.
Ama OIDC böyle çalışmaz. Sebebi şu:
OIDC, kullanıcı onayı merkezli çalışır. Temel amaç "bu kişi kim?" diye doğrulamaktır. Anonim bir token demek, "bu biri ama kim olduğunu bilmiyoruz" demek olur — ki bu amaca aykırıdır.
Şöyle düşün:
- Kimlik doğrulama = kim olduğunu kanıtlamak ("sen kimsin?")
- Oturum takibi = yaptıklarını hatırlamak ("ne yaptın?")
Misafir modu, kimlik doğrulama değil, oturum takibiyle ilgilidir. Yani kimlik sistemiyle ilgili değildir.
Aslında bu iyi haber. Böylece işleri net bir şekilde ayırmış olursun:
- Logto kimliği yönetir (kayıt, giriş, tokenler)
- Uygulaman misafir oturumlarını yönetir (kimlik oluşmadan önce)
Her sistem tasarlandığı işi yapsın.
Üç aşamalı çözüm
Desen şöyle: Misafir → Kimlik → Birleştirme
Aşama 1: Kimlik doğrulama olmadan misafir oturumlarını yönet
Sunucun misafir oturumlarını oluşturur ve yönetir. Henüz Logto devrede değildir.
Kullanıcı anlamlı bir işlem yaptığında (sepete ekle gibi), sunucun şunları yapar:
- Bir misafir ID'si üretir (ör: UUID)
- Bunu bir çerez veya JWT olarak döndürür
- Kullanıcı işlemlerini bu misafir ID altında saklar
Basit tut. guest_sessions tablosu, guest_id, data ve created_at alanlarıyla yeterli olur.
Aşama 2: Kullanıcıların Logto ile giriş yapmasına izin ver
Kullanıcı "Kaydol" veya "Giriş yap"a tıkladığında, standart Logto OIDC akışını başlat.
Misafir ID, bu işlem boyunca çerez/depolamada kalır. Başarılı kimlik doğrulamadan sonra ön yüzünde artık şunlar olur:
- Logto'dan access token (kullanıcı kimliği)
- Önceden alınan misafir ID (misafir verisi)
Aşama 3: Misafir verisini kimliği doğrulanmış kullanıcıya güvenle birleştir
Şimdi bağlantı kur. Her ikisiyle sunucu API'ni çağır:
Sunucun her iki tokenı da doğrulamalı:
- Access token'ı doğrula → kullanıcı ID'sini çıkar. Logto'da bunu nasıl yapacağını Access token doğrulama kısmında görebilirsin.
- Misafir ID'yi doğrula → bunun gerçekten sunucunun oluşturduğu bir misafir oturumu olduğundan emin ol. Bu kritik: istemciden gelen misafir ID'sine hiçbir zaman doğrudan güvenme, doğrula.
Sadece ikisi de geçerli ise:
- Misafir verisini kullanıcı hesabına ekle
- Misafir oturumunu geçersiz kıl
Birleştirme mantığı işine bağlıdır. Alışveriş sepeti mi? Ürünleri birleştir. Belge taslağı mı? Sahipliğini aktar. Sen karar verirsin.
Birleştirme uç noktanı token doğrulama ile nasıl güvenli hale getirirsin
Birleştirme uç noktası hassastır. Aklında bulundurman gerekenler:
- Her zaman access token'ı doğrula. Kullanıcı ID'sini doğrudan istek gövdesinden okuma. JWT'yi çöz ve doğrula. Logto'da nasıl yapacağını burada görebilirsin.
- Her zaman misafir ID'yi doğrula. Veritabanında var mı ve süresi dolmadı mı diye kontrol et. JWT olarak verdiysen imzasını da kontrol et.
- Kimlik doğrulama gerektir. Geçerli bir access token olmadan istekleri reddet.
- Misafir oturumlarına TTL ayarla. Terkedilmiş oturumları 30 gün sonra (veya senin uygulamana uygun sürede) temizle.
Sonuç
Logto ile misafir modu bu basit desenle çalışır:
- Misafir (senin uygulaman) → kullanıcılar kaydolmadan önce oturumları yönet
- Kimlik (Logto) → kayıt ve girişi yönet
- Birleştir (senin uygulaman) → misafir verisini gerçek kullanıcıya bağla
Bu desen sadece Logto ile değil, herhangi bir OIDC sağlayıcıyla çalışır. Temel nokta: kimlik doğrulama ve oturum takibi farklı konulardır. Her sisteme kendi işini yaptır.

