Miten ottaa käyttöön vierastila (anonyymit käyttäjät) ja muuntaa Logto-käyttäjiksi
Opettele, miten toteutat vierastilan ja muutat vieraat Logto-käyttäjiksi kolmen vaiheen mallin avulla: hallitse vierassessioita, tunnistaudu OIDC:llä ja yhdistä vieraan tiedot käyttäjätiliin turvallisesti.
Monet sovellukset antavat käyttäjien kokeilla ominaisuuksia ennen rekisteröitymistä. Ajattele ostoskoreja, asiakirjaluonnoksia tai tallennettuja asetuksia. Käyttäjät odottavat, että tämä "vierastila" vain toimii.
Mutta jos käytät kirjautumiseen Logtoa (tai muuta OIDC-palvelua), saatat miettiä: miten käsittelen anonyymejä käyttäjiä?
Lyhyt vastaus: Logto huolehtii tunnistautumisesta, sovelluksesi vierassessioista. Ne ovat eri asioita.
Tässä artikkelissa näytän yksinkertaisen kolmen vaiheen mallin, jolla saat vierastilan toimimaan Logton kanssa. Opit:
- Hallitsemaan vierassessioita backendissasi
- Antamaan vieraiden rekisteröityä Logton kautta
- Yhdistämään vieraan tiedot oikeaan käyttäjätiliin
Miksi Logtossa ei ole "anonyymikiriutumista"
Voisit odottaa, että Logtossa olisi "anonyymikiriutuminen". Jotain tyyliin: kutsu rajapintaa, saat tokenin, eikä käyttäjän tarvitse tehdä mitään.
Mutta näin OIDC ei toimi. Tässä syy:
OIDC perustuu käyttäjän suostumukseen. Sen idea on varmistaa "kuka tämä henkilö on?" Anonyymitoken tarkoittaisi "joku, mutta emme tiedä kuka" — mikä kumoaa koko tarkoituksen.
Ajattele näin:
- Tunnistautuminen = identiteetin todistaminen ("kuka olet?")
- Session seuraaminen = toimien muistaminen ("mitä teit?")
Vierastila liittyy session seuraamiseen, ei tunnistautumiseen. Siksi se ei kuulu kirjautumisjärjestelmääsi.
Tämä on itse asiassa hyvä uutinen. Saat selkeän jaon:
- Logto huolehtii identiteetistä (rekisteröityminen, kirjautuminen, tokenit)
- Sovelluksesi käsittelee vierassessiot (ennen kuin identiteetti on tiedossa)
Anna jokaisen järjestelmän hoitaa oma tehtävänsä.
Kolmen vaiheen ratkaisu
Tässä on malli: Vieras → Tunnistus → Yhdistäminen
Vaihe 1: Käsittele vierassessiot ilman kirjautumista
Backendisi luo ja hallinnoi vierassessioita. Logtoa ei tässä vaiheessa vielä tarvita.
Kun käyttäjä tekee merkityksellisen toiminnon (kuten lisää ostoskoriin), backendisi:
- Luo vieras-ID:n (esim. UUID)
- Palauttaa sen cookiena tai JWT:nä
- Tallentaa käyttäjän toiminnot tämän vieras-ID:n alle
Pidä se yksinkertaisena. Taulu guest_sessions, jossa on guest_id, data ja created_at, riittää.
Vaihe 2: Anna käyttäjien kirjautua Logtoon
Kun käyttäjä klikkaa "Rekisteröidy" tai "Kirjaudu sisään", käynnistä tavallinen Logto OIDC -prosessi.
Vieras-ID pysyy cookiessa/tallennuksessa tämän ajan. Onnistuneen kirjautumisen jälkeen frontendillasi on:
- Logton access token (käyttäjän identiteetti)
- Vieras-ID aikaisemmasta (vieraan tiedot)
Vaihe 3: Yhdistä vieraan tiedot kirjautuneeseen käyttäjään turvallisesti
Yhdistä tiedot näin: kutsu backendisi rajapintaa molemmilla tiedoilla:
Backendisi pitää tarkistaa molemmat ennen yhdistämistä:
- Tarkista access token → poimi käyttäjän ID. Katso Access-tokenin validointi, miten tämä tehdään Logton kanssa.
- Tarkista vieras-ID → varmista, että kyseessä on olemassa oleva vierassessio jonka backendisi on luonut. Tämä on kriittistä — älä ikinä luota vieras-ID:hen, joka tulee suoraan asiakkaalta ilman tarkistusta.
Vasta kun molemmat on tarkistettu:
- Yhdistä vieraan tiedot käyttäjätiliin
- Mittaa vierassessio päättyneeksi
Yhdistämisen logiikka riippuu liiketoiminnastasi. Ostoskori? Yhdistä tuotteet. Asiakirjaluonnokset? Siirrä omistajuus. Sinä päätät.
Näin suojaat yhdistämisrajapintasi token-tarkistuksella
Yhdistämisrajapinta on herkkä toiminto. Muista nämä asiat:
- Tarkista aina access token. Älä lue käyttäjän ID:tä pelkästään request bodysta. Pura ja validoi JWT. Näin teet sen Logtolla.
- Tarkista aina vieras-ID. Varmista, että se on tietokannassasi ja ettei se ole vanhentunut. Jos annoit sen JWT:nä, tarkista allekirjoitus.
- Vaadi tunnistautuminen. Yhdistämisrajapinnan tulee hylätä ilman kelvollista access tokenia tehdyt pyynnöt.
- Aseta vierassessioille voimassaoloaika. Siivoa hylätyt sessiot esim. 30 päivän jälkeen (tai mikä sopii sovellukseesi).
Yhteenveto
Vierastila Logton kanssa noudattaa yksinkertaista mallia:
- Vieras (sovelluksesi) → hallitse sessiot ennen käyttäjän rekisteröitymistä
- Tunnistus (Logto) → hoitaa kirjautumisen ja rekisteröitymisen
- Yhdistäminen (sovelluksesi) → liitä vieraan tiedot oikeaan käyttäjään
Tämä malli toimii minkä tahansa OIDC-palvelun kanssa, ei vain Logton. Tärkein oivallus: tunnistautuminen ja session seuraaminen ovat eri asioita. Anna jokaisen järjestelmän hoitaa sille tarkoitettu tehtävä.

