From 4adf2d60aa62b097b33c638733ca7b4003ab3bdd Mon Sep 17 00:00:00 2001 From: QiuSW <105186638@qq.com> Date: Mon, 17 Aug 2026 11:09:23 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20=E5=AE=8C=E6=88=90=E4=BB=BB=E5=8A=A1=20?= =?UTF-8?q?#104=20=E5=BE=85=E9=AA=8C=E6=94=B6=E5=BD=92=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/task/104-Sense-30天登录有效期.md | 74 +++++++++++++++++++++ wiki-docs.json | 4 ++ 2 files changed, 78 insertions(+) create mode 100644 docs/task/104-Sense-30天登录有效期.md diff --git a/docs/task/104-Sense-30天登录有效期.md b/docs/task/104-Sense-30天登录有效期.md new file mode 100644 index 0000000..a1aff17 --- /dev/null +++ b/docs/task/104-Sense-30天登录有效期.md @@ -0,0 +1,74 @@ + +generated: true (请先修改 Gitea Wiki,禁止直接编辑本文件) +wiki_page: Task-104-Sense-30天登录有效期 +wiki_url: https://git.ilapage.cn/ila/yovision/wiki/Task-104-Sense-30%E5%A4%A9%E7%99%BB%E5%BD%95%E6%9C%89%E6%95%88%E6%9C%9F.- +wiki_revision: 985be106d605ffec01de071d1f9271d33c708325 +synchronized_at: 2026-08-17T03:09:07Z + + +# 104 Sense-30天登录有效期 + +- 类型:需求 +- 所属 Epic:#7 +- 所属 MVP / 版本:#8 +- 状态:待验收 +- 日期:2026-08-17 +- Gitea 工单:https://git.ilapage.cn/ila/yovision/issues/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 参数单测覆盖。实际浏览器关闭/重开由人工验收确认。#104 独立包不包含仍待验收的 #101;两项进入 `dev` 后才能生成最终组合包。 + +## 遗留问题 + +- 当前服务已恢复为用户原有的 #101 验证包,避免应用外壳回退;#104 独立包保留为具名 ZIP,未覆盖当前标准包。 +- 当前架构没有服务端单 Token 撤销能力,这是确认范围内的安全限制。 + +## 相关提交 + +- `857ba45` feat: 将 Sense 登录有效期调整为30天 (#104) +- `a843121` docs: 记录 Sense 30天登录有效期 (#104) +- `adc227f` test: 验证 Sense 30天 JWT 到期时间 (#104) diff --git a/wiki-docs.json b/wiki-docs.json index a14222e..8a8e8d1 100644 --- a/wiki-docs.json +++ b/wiki-docs.json @@ -147,6 +147,10 @@ { "page": "Task-99-Sense登录页只读配置接口", "path": "docs/task/99-Sense登录页只读配置接口.md" + }, + { + "page": "Task-104-Sense-30天登录有效期", + "path": "docs/task/104-Sense-30天登录有效期.md" } ] }