Merge remote-tracking branch 'origin/dev' into fix/101-sense-layout-shell
# Conflicts: # docs/02-architecture-and-code-map.md
This commit is contained in:
@@ -0,0 +1,80 @@
|
||||
<!-- gitea-wiki-mirror:start -->
|
||||
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: 2b4df23ec321de868840da61d87d8d6fce8537a7
|
||||
synchronized_at: 2026-08-17T03:46:13Z
|
||||
<!-- gitea-wiki-mirror:end -->
|
||||
|
||||
# 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 参数单测覆盖。用户已于 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)
|
||||
Reference in New Issue
Block a user