如何实现游客模式(匿名用户)并转化为 Logto 用户
通过三阶段模式学习如何实现游客模式并将其转化为 Logto 用户:管理游客会话、使用 OIDC 进行认证,并安全地将游客数据合并到用户账户中。
通过三阶段模式学习如何实现游客模式并将其转化为 Logto 用户:管理游客会话、使用 OIDC 进行认证,并安全地将游客数据合并到用户账户中。
许多应用允许用户在注册前先体验部分功能,比如购物车、文档草稿或保存偏好。用户期望“游客模式”能开箱即用。
但如果你用 Logto(或任何 OIDC 提供商)做认证,可能会想:怎么处理这些匿名用户?
简短的答案是:Logto 负责认证,你的应用负责游客会话。两者是独立的。
本文将展示一个简单的三阶段模式,利用 Logto 实现游客模式。你会学到如何:
你可能以为 Logto 会有一个“匿名登录”功能。比如:调用 API,拿到 token,无需用户交互。
但 OIDC 不是这样设计的,原因如下:
OIDC 是围绕用户同意构建的。 它的核心目的是验证“这个人是谁?”匿名 token 代表“这是某个人,但不知道是谁”——这违背了初衷。
可以这样理解:
游客模式关注的是会话追踪,而不是认证。因此它不属于认证系统的范畴。
其实这反而是件好事。 意味着有了清晰的分工:
各司其职,各尽其用。
模式如下:游客 → 认证 → 合并
你的后端负责创建和管理游客会话。此时 Logto 尚未介入。
用户产生实际操作(如加入购物车)时,你的后端:
保持架构简单。guest_sessions 表包括 guest_id、data、created_at 即可。
当用户点击“注册”或“登录”按钮时,启动标准 Logto OIDC 流程。
guestId 保持在 cookie/存储中。认证成功后,前端同时拥有:
现在连接数据。用两者调用后端 API:
后端必须校验 两者,再允许合并:
只有两者验证都通过后:
合并逻辑视你的业务而定。购物车?合并商品。文档草稿?转移所有权。你决定。
合并接口属于敏感操作,需注意:
用 Logto 实现游客模式,遵循如下简单模式:
该模式适用于所有 OIDC 提供商,不仅仅是 Logto。核心思想在于:认证与会话追踪是两件事,各自独立,发挥其长处即可。