Clone
3
Task-104-Sense-30天登录有效期
ila edited this page 2026-08-17 11:45:52 +08:00
This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

104 Sense-30天登录有效期

  • 类型:需求
  • 所属 Epic:#7
  • 所属 MVP / 版本:#8
  • 状态:已完成
  • 日期:2026-08-17
  • Gitea 工单:#104
  • Wiki 页面:Task-104-Sense-30天登录有效期
  • Wiki revision:见本地镜像头

背景与目标

Sense 原生产、demo、SQLite 和完整配置默认 JWT 有效期为 3600 秒,前端 Token 使用浏览器会话 Cookie。按用户确认,将默认登录有效期统一调整为固定 30 天,使浏览器重启后在 Token 未过期时仍可保持登录。

最终方案

  • 保留 go-admin JWT 中间件和 go-admin-ui js-cookie 封装;非开发模式未显式配置时默认使用 30 天,合法显式配置仍优先,开发模式保持上游行为。
  • 生产、demo、SQLite、full 与 Windows 运行时生成配置统一使用 2,592,000 秒。
  • Sense-Admin-Token Cookie 使用 expires: 30;退出登录仍删除 Cookie。
  • 不是滑动续期,不增加 Refresh Token、服务端会话表或 Token 黑名单。已有 Token 不自动延长,部署后需重新登录。
  • Token 泄露窗口扩大到 30 天;紧急失效需要轮换 JWT secret,这会使全部现有登录失效。

修改文件

  • Sense/server/common/middleware/auth.go、auth_test.go:实现并验证默认 30 天 JWT。
  • Sense/server/config/settings*.yml、READMEN.md:统一配置值和示例。
  • Sense/scripts/runtime/sense-common.ps1、Sense/tests/package/run-tests.ps1:统一并验证 Windows 运行时配置。
  • Sense/ui/src/utils/auth.js、Sense/ui/tests/unit/utils/auth.spec.js:持久化 Cookie 30 天并验证设置、读取和删除。
  • docs/02-architecture-and-code-map.md、docs/04-local-development-and-verification.md、docs/09-product-requirements.md:由 Wiki 同步的长期文档镜像。

验收结果

验收标准 结果
非开发模式签发 JWT 的到期时间为签发后 30 天 通过
Token Cookie 使用 30 天持久化期限,退出仍删除 通过
浏览器关闭后重新打开仍保持登录 通过(用户验收)
所有运行配置及 Windows 生成值为 2,592,000 秒 通过
Go、Vue、Windows 包测试与 PostgreSQL 启动回归 通过
ZIP 仅含模板配置,不包含现场秘密或数据 通过
已有 Token 不自动延长并记录重新登录要求 通过

测试

  • go test ./...:通过。
  • go vet ./...:通过。
  • go build ./...:通过。
  • pnpm run lint:0 error,32 条上游既有 warning。
  • pnpm exec vue-cli-service test:unit --runInBand:18 suites、48 tests 通过。
  • Sense/tests/package/run-tests.bat -PackageRoot Sense/dist/sense-windows-amd64:22 assertions 通过。
  • Windows amd64 生产构建、资源审计、包审计:通过;4 条既有构建 warning。
  • 独立 #104 包使用现场 PostgreSQL 完成迁移和启动,127.0.0.1:18080 监听成功,生成配置确认 timeout: 2592000。
  • 包:Sense/dist/sense-windows-amd64-104.zip,56,457,546 bytes,SHA-256 BCE3EDD3F5BD79C75A953CB7673D1C9867CE3BB89755D6A188C7CA1226D05CE3,来源提交 adc227f110bf0c456d1523eac151ed1d8360cc83。
  • 一次错误的 Vue 测试参数把 --runInBand 识别为模式而未找到测试,已改用正确命令并通过;一次临时运行数据恢复把日志目录复制成同名文件,修正验证环境后从失败点重试并通过,均非产品代码缺陷。
  • 未验证部分:无法用真实等待 30 天验证自然到期;以固定时钟 JWT 测试和 Cookie 参数单测覆盖。用户已于 2026-08-17 明确验收通过,浏览器关闭/重开行为由人工确认。#104 独立包不包含仍待验收的 #101;两项进入 dev 后才能生成最终组合包。

遗留问题

  • 当前服务已恢复为用户原有的 #101 验证包,避免应用外壳回退;#104 独立包保留为具名 ZIP,未覆盖当前标准包。
  • 当前架构没有服务端单 Token 撤销能力,这是确认范围内的安全限制。

验收确认

  • 用户于 2026-08-17 明确回复“#104 验收通过”。
  • PR #105 按仓库门禁合入 dev;main 不变。

相关提交

  • 857ba45 feat: 将 Sense 登录有效期调整为30天 (#104)
  • a843121 docs: 记录 Sense 30天登录有效期 (#104)
  • adc227f test: 验证 Sense 30天 JWT 到期时间 (#104)