如何實作訪客模式(匿名用戶)並轉換成 Logto 用戶
學習如何使用三階段模式:管理訪客會話、透過 OIDC 驗證,以及安全地合併訪客資料到用戶帳號,來實作訪客模式並轉換成 Logto 用戶。
學習如何使用三階段模式:管理訪客會話、透過 OIDC 驗證,以及安全地合併訪客資料到用戶帳號,來實作訪客模式並轉換成 Logto 用戶。
許多應用程式都允許用戶在註冊前體驗功能,像是購物車、文件草稿或儲存偏好設定。用戶期望所謂的「訪客模式」能順利運作。
但若你使用 Logto(或其他 OIDC 提供者)作為驗證服務,可能會疑惑:這些匿名用戶該怎麼處理?
簡單來說:Logto 負責驗證,你的應用負責訪客會話。這是兩個不同領域。
本文會介紹如何用三階段模式,在 Logto 下實作訪客模式。你將學會如何:
你可能以為 Logto 有個「匿名登入」功能,類似:呼叫 API、取得一個令牌,不需用戶互動。
但 OIDC 並不是這樣設計的,其原因如下:
OIDC 以用戶同意為基礎。 它的核心就在於驗證「這個人是誰?」匿名令牌只代表「這是某個人,但我們不知道是誰」——和 OIDC 本意衝突。
換個方式想:
訪客模式關於會話追蹤,不是驗證身份。因此這部分不屬於你的驗證系統。
這其實是好事。 也就是你可以明確區分:
讓每個系統只做它應該做的事。
重點模式:訪客 → 驗證 → 合併
你的後端負責創建與管理訪客會話,Logto 暫時還沒有參與其中。
當用戶執行重要動作(如加入購物車)時,你的後端會:
保持簡單即可。只要一張 guest_sessions 資料表,欄位包含 guest_id、data 和 created_at 即可。
當用戶點擊「註冊」或「登入」,即觸發標準的 Logto OIDC 流程。
此過程中 guest ID 會繼續存在於 cookie 或儲存機制裡。驗證成功後,前端同時持有:
現在把兩者串起來,同時傳給你的後端 API:
後端必須同時驗證兩種憑證,然後才進行資料合併:
僅於兩邊都驗證通過後:
合併邏輯要依你的實際需求決定。若是購物車就合併商品,若是文件草稿則轉移擁有權等。
合併接口端點屬於敏感操作,請特別注意:
Logto 訪客模式很簡潔:
這個架構也適用於任何 OIDC 服務,不只 Logto。最重要的觀念:驗證(Authentication)與會話追蹤(Session tracking)本來就該分工處理,讓各系統發揮其本職。