Nederlands
  • gastmodus
  • anonieme gebruikers
  • gebruikersconversie

Hoe implementeer je gastmodus (anonieme gebruikers) met Logto

Leer hoe je gastmodus implementeert met Logto met behulp van een drie-fasenpatroon: beheer gastsessies, authenticeer met OIDC en voeg gastgegevens veilig samen met gebruikersaccounts.

Yijun
Yijun
Developer

Stop met weken verspillen aan gebruikersauthenticatie
Lanceer veilige apps sneller met Logto. Integreer gebruikersauthenticatie in minuten en focus op je kernproduct.
Aan de slag
Product screenshot

Veel apps laten gebruikers functies uitproberen voordat ze zich aanmelden. Denk aan winkelwagentjes, conceptdocumenten of opgeslagen voorkeuren. Gebruikers verwachten dat deze "gastmodus" gewoon werkt.

Maar als je Logto (of een andere OIDC-provider) gebruikt voor authenticatie, vraag je je misschien af: hoe ga ik om met deze anonieme gebruikers?

Het korte antwoord: Logto regelt de authenticatie, jouw app regelt de gastsessies. Het zijn aparte verantwoordelijkheden.

In dit artikel laat ik je een eenvoudig drie-fasenpatroon zien om gastmodus te implementeren met Logto. Je leert hoe je:

  • Gastsessies beheert in je backend
  • Gasten laat aanmelden via Logto
  • Gastgegevens samenvoegt met het echte gebruikersaccount

Waarom er geen "anonieme login" is in Logto

Je zou kunnen verwachten dat Logto een functie voor "anonieme login" heeft. Zoiets als: een API aanroepen, een token krijgen, geen gebruikersinteractie nodig.

Maar zo werkt OIDC niet. Hier is waarom:

OIDC is gebouwd rond gebruikersinstemming. Het hele idee is om te verifiëren "wie is deze persoon?" Een anoniem token zou betekenen "dit is iemand, maar we weten niet wie" — wat het doel ondermijnt.

Zie het zo:

  • Authenticatie = identiteit bewijzen ("wie ben jij?")
  • Sessietracking = acties onthouden ("wat heb je gedaan?")

Gastmodus gaat over sessietracking, niet over authenticatie. Het hoort dus niet in je auth-systeem thuis.

Dit is eigenlijk goed nieuws. Het betekent dat je een duidelijke scheiding hebt:

  • Logto regelt identiteit (aanmelden, inloggen, tokens)
  • Jouw app regelt gastsessies (voordat er een identiteit is)

Laat elk systeem doen waar het voor bedoeld is.

De drie-fasenoplossing

Hier is het patroon: Gast → Auth → Samenvoegen

Fase 1: Gastsessies afhandelen zonder authenticatie

Je backend maakt en beheert gastsessies. Logto is hier nog niet bij betrokken.

Wanneer een gebruiker een betekenisvolle actie uitvoert (zoals toevoegen aan het winkelwagentje), doet je backend het volgende:

  1. Genereert een gast-ID (bijvoorbeeld UUID)
  2. Retourneert deze als cookie of JWT
  3. Slaat gebruikersacties op onder deze gast-ID

Houd het simpel. Een guest_sessions-tabel met guest_id, data en created_at is voldoende.

Fase 2: Gebruikers laten aanmelden met Logto

Wanneer de gebruiker op "Aanmelden" of "Inloggen" klikt, start je de standaard Logto OIDC-flow.

De gast-ID blijft in de cookie/opslag tijdens dit proces. Na succesvolle authenticatie heeft je frontend nu:

  • Een access token van Logto (gebruikersidentiteit)
  • De eerdere gast-ID (gastgegevens)

Fase 3: Gastgegevens veilig samenvoegen met geauthenticeerde gebruikers

Nu verbind je alles. Roep je backend-API aan met allebei:

Je backend moet beide tokens valideren voordat je samenvoegt:

  1. Valideer het access token → haalt gebruikers-ID op. Zie Access tokens valideren voor hoe je dit met Logto doet.
  2. Valideer de gast-ID → controleer of het een echte gastsessie is die jouw backend heeft uitgegeven. Dit is cruciaal — vertrouw nooit zomaar een gast-ID van de client zonder verificatie.

Pas nadat beide validaties slagen:

  1. Voeg gastgegevens samen met het gebruikersaccount
  2. Maak de gastsessie ongeldig

De samenvoeglogica hangt af van jouw business. Winkelwagentje? Combineer items. Conceptdocumenten? Draag eigendom over. Jij bepaalt.

Hoe je je merge-endpoint beveiligt met tokenvalidatie

Het merge-endpoint is een gevoelige operatie. Een paar aandachtspunten:

  • Valideer altijd het access token. Lees niet zomaar de gebruikers-ID uit de request-body. Decodeer en verifieer de JWT. Zo doe je het met Logto.
  • Valideer altijd de gast-ID. Controleer of deze bestaat in je database en niet is verlopen. Als je hem als JWT hebt uitgegeven, verifieer dan de handtekening.
  • Vereis authenticatie. Het merge-endpoint moet verzoeken zonder geldig access token weigeren.
  • Stel een TTL in voor gastsessies. Ruim verlaten sessies op na 30 dagen (of wat logisch is voor jouw app).

Conclusie

Gastmodus met Logto volgt een eenvoudig patroon:

  1. Gast (jouw app) → beheer sessies voordat gebruikers zich aanmelden
  2. Auth (Logto) → regel aanmelden en inloggen
  3. Samenvoegen (jouw app) → koppel gastgegevens aan echte gebruikers

Dit patroon werkt met elke OIDC-provider, niet alleen Logto. Het belangrijkste inzicht is: authenticatie en sessietracking zijn aparte verantwoordelijkheden. Laat elk systeem doen waar het voor gebouwd is.