Files
Genarrative/docs/technical/CREATION_HUB_LOGOUT_PRIVATE_CACHE_FIX_2026-04-25.md
kdletters cbc27bad4a
Some checks failed
CI / verify (push) Has been cancelled
init with react+axum+spacetimedb
2026-04-26 18:06:23 +08:00

1.6 KiB
Raw Permalink Blame History

创作中心退出登录私有缓存清理修复 2026-04-25

问题

点击退出登录后,页面未刷新时仍能切到创作中心,并看到上一位登录用户的作品。刷新页面后才恢复正常。

根因

  1. AuthGate 的退出动作先等待 /api/auth/logout 完成,再通过全局鉴权事件重新 hydrate期间前端 context 仍可能暴露旧用户。
  2. 平台创作入口里的 RPG works 会在 canReadProtectedData=false 时清空,但大鱼吃小鱼与拼图 works 是 PlatformEntryFlowShellImpl 内部 state没有在退出登录时同步清空。
  3. 创作 Tab 会保持挂载以降低闪烁,因此私有作品数组只要留在内存里,就会继续被货架组件渲染。

修复口径

  1. 用户触发退出当前设备或退出全部设备时,前端必须先本地收回 user / canAccessProtectedData,再等待后端吊销会话。
  2. canReadProtectedDatatrue 变为未登录态 false 时,创作中心必须清空所有私有作品缓存:
    • RPG works / library 由 useRpgEntryBootstrap 清空。
    • Big Fish works、Puzzle works 由 PlatformEntryFlowShellImpl 清空。
    • 当前创作工作区、结果页、删除忙碌态与生成态一并复位。
  3. 公开广场与分类数据不受影响,仍按匿名公开接口读取。

验收

  1. 点击退出登录后,不刷新页面进入创作 Tab只能看到空作品货架不再出现上一账号作品。
  2. 退出登录瞬间 AuthUiContext.usernullcanAccessProtectedData=false
  3. 重新登录后按新账号重新拉取作品列表,不复用旧账号内存缓存。