fix/42-session-lifetime-30-days
main
工单 #42 的实现与证据见 #42 。
SessionLifetime = 30 * 24 * time.Hour
server/app/lexgo/service.go
expires_at
TestMySQLSessionLifetimeIsThirtyDays
SessionLifetime - 1h
不合并既有 PR,基准分支为已验收的 main。
- 有效期提取为具名常量 SessionLifetime(绝对有效期,不滑动续期),学习端与管理端共用 同一登录接口,一处生效;数据库结构与接口字段不变,旧会话按各自 expires_at 自然过渡。 - 过期断言改为按常量计算(临期仍可用、超过后被拒),新增测试锁定 30 天常量、 登录响应与库内 expires_at 一致、库内只存 SHA-256 摘要。 - 撤销规则不变:退出撤销当前会话,改密码/停用/重置撤销该账号全部会话。 - Wiki 已在线上更新(会话规则数字、验证说明、Home/Project-Profile 记录);镜像导出留到 验收时执行,避免把尚未合入的 #40 段落带进本分支。
No dependencies set.
The note is not visible to the blocked user.
工单 #42 的实现与证据见 #42 。
SessionLifetime = 30 * 24 * time.Hour(server/app/lexgo/service.go):学习端与管理端共用同一登录接口,因此一处生效;绝对有效期,不滑动续期。
expires_at自然过渡。TestMySQLSessionLifetimeIsThirtyDays锁定 30 天常量、响应与库内expires_at一致、库内只存摘要;过期断言改为按常量计算:SessionLifetime - 1h仍可用、再前进 2 小时被拒)。
"退出其他设备"未包含在本单。
以免把尚未合入的 #40 段落带进本分支。
不合并既有 PR,基准分支为已验收的 main。