将登录会话改为 30 天闲置续期与 90 天绝对期限 #10

Merged
Zayden-Jung merged 1 commits from codex/session-lifetime into main 2026-11-06 04:44:19 +00:00
Collaborator

当前登录会话固定 8 小时且不会续期,导致创作用户隔天必须重新登录。本改动将会话改为 30 天无活动过期,正常鉴权时续期,最长在签发后 90 天重新登录。

  • 邮箱登录、验证注册与 OAuth 兑换统一返回 expires_in=2592000。
  • 新增 004-session-lifetime.sql 记录签发时间和绝对期限;旧会话保留原到期时间,不复活已过期记录,仍有效的旧会话在下次鉴权时续期。旧记录缺少签发时间,90 天上限从迁移时间起算。
  • 会话鉴权原子更新闲置期限,受绝对期限限制;过期、撤销、跨项目会话均不可续期。
  • 平台受保护接口与 auth/me 返回 X-Foundry-Session-Expires-In,供前端按服务端剩余时长更新 HttpOnly Cookie,临近 90 天时缩短 Cookie。
  • 增加真实隔离数据库回归:闲置过期、绝对过期、并发续期、撤销、项目隔离、OAuth 新会话以及迁移不复活旧会话。

验证:ces-control CI #881 成功,包含 Go 检查/构建、隔离迁移和数据库测试。本机仅执行格式及脚本语法检查,未编译 Core。
前端已准备配套 Cookie 续期;此 PR 尚未合并、部署,等待用户手动合并 main。

当前登录会话固定 8 小时且不会续期,导致创作用户隔天必须重新登录。本改动将会话改为 30 天无活动过期,正常鉴权时续期,最长在签发后 90 天重新登录。 - 邮箱登录、验证注册与 OAuth 兑换统一返回 expires_in=2592000。 - 新增 004-session-lifetime.sql 记录签发时间和绝对期限;旧会话保留原到期时间,不复活已过期记录,仍有效的旧会话在下次鉴权时续期。旧记录缺少签发时间,90 天上限从迁移时间起算。 - 会话鉴权原子更新闲置期限,受绝对期限限制;过期、撤销、跨项目会话均不可续期。 - 平台受保护接口与 auth/me 返回 X-Foundry-Session-Expires-In,供前端按服务端剩余时长更新 HttpOnly Cookie,临近 90 天时缩短 Cookie。 - 增加真实隔离数据库回归:闲置过期、绝对过期、并发续期、撤销、项目隔离、OAuth 新会话以及迁移不复活旧会话。 验证:ces-control CI #881 成功,包含 Go 检查/构建、隔离迁移和数据库测试。本机仅执行格式及脚本语法检查,未编译 Core。 前端已准备配套 Cookie 续期;此 PR 尚未合并、部署,等待用户手动合并 main。
codex-bot added 1 commit 2026-11-06 04:40:30 +00:00
feat(auth): renew sessions with 30-day idle and 90-day absolute limits
Foundry Go checks / check (push) Successful in 2m53s
Foundry Go checks / check (pull_request) Successful in 3m9s
34c461a61c
Zayden-Jung merged commit 867f0303d8 into main 2026-11-06 04:44:19 +00:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Zayden-Jung/foundry-core#10