• modalità ospite
  • utenti anonimi
  • conversione utente

Come implementare la modalità ospite (utenti anonimi) e convertirli in utenti Logto

Scopri come implementare la modalità ospite e convertirla in utenti Logto utilizzando un pattern in tre fasi: gestire le sessioni ospite, autenticare con OIDC e unire in modo sicuro i dati ospite agli account utente.

Yijun
Yijun
Developer

Smetti di sprecare settimane sull'autenticazione degli utenti
Lancia app sicure più velocemente con Logto. Integra l'autenticazione degli utenti in pochi minuti e concentrati sul tuo prodotto principale.
Inizia ora
Product screenshot

Molte app permettono agli utenti di provare le funzionalità prima di registrarsi. Pensa ai carrelli della spesa, alle bozze di documenti o alle preferenze salvate. Gli utenti si aspettano che questa "modalità ospite" funzioni semplicemente.

Ma se usi Logto (o qualsiasi provider OIDC) per l'autenticazione, potresti chiederti: come gestisco questi utenti anonimi?

La risposta breve: Logto gestisce l'autenticazione, la tua app gestisce le sessioni ospite. Sono due aspetti separati.

In questo articolo, ti mostrerò un semplice pattern in tre fasi per implementare la modalità ospite con Logto. Imparerai come:

  • Gestire le sessioni ospite nel tuo backend
  • Permettere agli ospiti di registrarsi tramite Logto
  • Unire i dati ospite all'account reale dell'utente

Perché non c'è un "login anonimo" in Logto

Potresti aspettarti che Logto abbia una funzione di "login anonimo". Qualcosa tipo: chiami un'API, ottieni un token, nessuna interazione utente necessaria.

Ma non è così che funziona OIDC. Ecco perché:

OIDC si basa sul consenso dell'utente. L'obiettivo è verificare "chi è questa persona?" Un token anonimo significherebbe "questa è una persona, ma non sappiamo chi" — e questo vanifica lo scopo.

Pensala così:

  • Autenticazione = prova dell'identità ("chi sei?")
  • Tracciamento della sessione = ricordare le azioni ("cosa hai fatto?")

La modalità ospite riguarda il tracciamento della sessione, non l'autenticazione. Quindi non fa parte del sistema di autenticazione.

In realtà è una buona notizia. Significa che hai una separazione netta:

  • Logto gestisce l'identità (registrazione, login, token)
  • La tua app gestisce le sessioni ospite (prima che l'identità esista)

Lascia che ogni sistema faccia ciò per cui è stato progettato.

La soluzione in tre fasi

Ecco il pattern: Ospite → Autenticazione → Unione

Fase 1: Gestisci le sessioni ospite senza autenticazione

Il tuo backend crea e gestisce le sessioni ospite. Logto non è ancora coinvolto.

Quando un utente compie un'azione significativa (ad esempio aggiungere al carrello), il backend:

  1. Genera un guest ID (ad esempio UUID)
  2. Lo restituisce come cookie o JWT
  3. Memorizza le azioni dell'utente sotto questo guest ID

Tieni tutto semplice. Una tabella guest_sessions con guest_id, data e created_at è sufficiente.

Fase 2: Fai accedere l'utente tramite Logto

Quando l'utente clicca su "Registrati" o "Accedi", avvia il normale flusso OIDC di Logto.

Il guest ID rimane nel cookie o nello storage durante questo processo. Dopo l'autenticazione riuscita, il frontend ha ora:

  • Un access token da Logto (identità utente)
  • Il guest ID precedente (dati ospite)

Fase 3: Unisci in modo sicuro i dati ospite con l'utente autenticato

Ora collega i puntini. Chiama la tua API backend con entrambi:

Il backend deve validare entrambi i token prima di unire:

  1. Valida l'access token → estrai l'ID utente. Vedi Valida access tokens per come farlo con Logto.
  2. Valida il guest ID → conferma che sia una sessione ospite reale emessa dal tuo backend. Questo è fondamentale — non fidarti mai di un guest ID proveniente dal client senza verifica.

Solo dopo che entrambe le validazioni sono riuscite:

  1. Unisci i dati ospite all'account utente
  2. Invalida la sessione ospite

La logica di unione dipende dal tuo business. Carrello? Unisci gli articoli. Bozze di documenti? Trasferisci la proprietà. Decidi tu.

Come proteggere il tuo endpoint di unione tramite la validazione dei token

L'endpoint di unione è un'operazione sensibile. Alcune cose da ricordare:

  • Valida sempre l'access token. Non leggere solo l'ID utente dal body della richiesta. Decodifica e verifica il JWT. Ecco come farlo con Logto.
  • Valida sempre il guest ID. Controlla che esista nel tuo database e non sia scaduto. Se lo hai emesso come JWT, verifica la firma.
  • Richiedi l'autenticazione. L'endpoint di unione deve rifiutare richieste senza un access token valido.
  • Imposta un TTL per le sessioni ospite. Pulisci le sessioni abbandonate dopo 30 giorni (o quanto ha senso per la tua app).

Conclusione

La modalità ospite con Logto segue un pattern semplice:

  1. Ospite (la tua app) → gestire le sessioni prima che l'utente si registri
  2. Autenticazione (Logto) → gestire registrazione e login
  3. Unione (la tua app) → collegare i dati ospite agli utenti reali

Questo pattern funziona con qualsiasi provider OIDC, non solo Logto. La cosa importante da capire è: autenticazione e tracciamento della sessione sono due cose separate. Lascia che ogni sistema faccia quello per cui è stato costruito.