Türkçe
  • misafir modu
  • anonim kullanıcılar
  • kullanıcı dönüşümü

Logto ile misafir modu (anonim kullanıcılar) nasıl uygulanır

Logto ile misafir modu uygulamasını üç aşamalı bir desen kullanarak öğren: misafir oturumlarını yönet, OIDC ile kimlik doğrulama yap ve misafir verilerini güvenle gerçek kullanıcı hesabına birleştir.

Yijun
Yijun
Developer

Kullanıcı kimlik doğrulamasına haftalar harcamayı bırakın
Logto ile güvenli uygulamaları daha hızlı yayınlayın. Kullanıcı kimlik doğrulamasını dakikalar içinde entegre edin ve temel ürününüze odaklanın.
Başlayın
Product screenshot

Birçok uygulama kullanıcıların kaydolmadan önce özellikleri denemesine izin verir. Alışveriş sepetleri, belge taslakları veya kaydedilen tercihleri düşün. Kullanıcılar bu "misafir modu"nun sorunsuz çalışmasını bekler.

Ama kimlik doğrulama için Logto (veya herhangi bir OIDC sağlayıcısı) kullanıyorsan, şunu düşünebilirsin: Bu anonim kullanıcıları nasıl yönetirim?

Kısa cevap: Kimlik doğrulamayı Logto yönetir, misafir oturumlarını ise uygulaman yönetir. Bunlar ayrı konulardır.

Bu yazıda Logto ile misafir modunu uygulamak için basit, üç aşamalı bir desen göstereceğim. Şunları öğreneceksin:

  • Misafir oturumlarını backend tarafında yönetmek
  • Misafirlerin Logto üzerinden kaydolmasını sağlamak
  • Misafir verilerini gerçek kullanıcı hesabına birleştirmek

Neden Logto'da "anonim giriş" yok

Logto'nun bir "anonim giriş" özelliğine sahip olmasını bekleyebilirsin. Şuna benzer: bir API çağır, bir token al, kullanıcıdan etkileşim gerekmez.

Ama OIDC böyle çalışmaz. Nedeni şu:

OIDC kullanıcı onayı etrafında kurulu. Buradaki bütün amaç "bu kişi kim?" sorusuna yanıt vermek. Anonim bir token, "biri var ama kim olduğu belli değil" anlamına gelir — ki bu amacın kendisine ters düşer.

Şöyle düşün:

  • Kimlik doğrulama = kimliğin ispatı ("sen kimsin?")
  • Oturum takibi = yapılanların hatırlanması ("ne yaptın?")

Misafir modu kimlik doğrulama değil, oturum takibidir. Yani kimlik doğrulama sistemine ait değildir.

Aslında bu iyi haber. Çünkü temiz bir ayrımın olur:

  • Logto kimliği yönetir (kayıt, giriş, tokenler)
  • Uygulaman misafir oturumunu yönetir (kimlik oluşmadan önce)

Her sistem kendi işini yapsın.

Üç aşamalı çözüm

Desenimiz şu: Misafir → Kimlik Doğrulama → Birleştirme

Aşama 1: Kimlik doğrulama olmadan misafir oturumu yönetimi

Backend'in misafir oturumlarını oluşturur ve yönetir. Burada Logto devre dışıdır.

Kullanıcı anlamlı bir işlem yaptığında (örn. sepete ekleme), backend'in:

  1. Bir misafir ID'si üretir (örn. UUID)
  2. Bunu bir çerez veya JWT olarak döndürür
  3. Kullanıcı işlemlerini bu misafir ID altında saklar

Basit tut. guest_sessions tablosunda guest_id, data ve created_at olması yeterlidir.

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ı çalıştır.

Bu süreçte misafir ID çerezde/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 gelen misafir ID (misafir verisi)

Aşama 3: Misafir verisini kimliği doğrulanmış kullanıcıya güvenle birleştir

Şimdi noktaları birleştir. Backend API'ini ikisiyle birlikte çağır:

Backend'in her iki tokeni de doğrulamalıdır:

  1. Access token'i doğrula → kullanıcı ID'sini çıkar. Access token doğrulama dokümanına Logto ile bunu nasıl yapacağını inceleyebilirsin.
  2. Misafir ID'yi doğrula → bunun gerçekten senin backend'in tarafından verilen bir oturum olduğundan emin ol. Bu kritik — istemciden gelen herhangi bir misafir ID'ye asla doğrudan güvenme, mutlaka doğrula.

Her iki doğrulama da geçerse ancak o zaman:

  1. Misafir verisi kullanıcı hesabına birleştirilir
  2. Misafir oturumu geçersiz kılınır

Birleştirme mantığı iş mantığına göre değişir. Alışveriş sepeti mi? Öğeleri birleştir. Belge taslağı mı? Sahipliği devret. Sen karar verirsin.

Birleştirme endpoint'ini token doğrulama ile nasıl güvenli hale getirirsin

Birleştirme endpoint'i hassas bir işlemdir. Şunlara dikkat et:

  • Access token'i her zaman doğrula. Sadece kullanıcı ID'sini istek body'sinden okuyup geçme. JWT'yi çöz, doğrula. Logto ile nasıl yapılır?
  • Misafir ID'yi her zaman doğrula. Datalarında var mı, süresi geçmiş mi kontrol et. JWT olarak ürettiysen imzasını doğrula.
  • Kimlik doğrulama şartı koş. Birleştirme endpoint'i, geçerli access token olmadan gelen talepleri reddetmeli.
  • Misafir oturumlarına bir ömür belirle. Kullanılmayan oturumları 30 gün (veya uygulamana uygun başka bir süre) sonra temizle.

Sonuç

Logto ile misafir modu basit bir deseni takip eder:

  1. Misafir (uygulaman) → kullanıcı kaydolmadan önce oturumlardan sorumlu
  2. Kimlik Doğrulama (Logto) → kaydolma ve giriş yönetimi
  3. Birleştirme (uygulaman) → misafir verisini gerçek kullanıcıya bağla

Bu desen sadece Logto ile değil, herhangi bir OIDC sağlayıcısı ile de çalışır. Ana fikir şu: kimlik doğrulama ile oturum takibi ayrı konulardır. Her sistem kendi işini en iyi şekilde yapmalıdır.