# 55 Admin:用户密码最小长度调整为 6 个字符 - 类型:需求 - 父级大工单:#14 - 所属 MVP / 版本:#15 Admin 四模块可用闭环 - 状态:已完成 - 日期:2026-08-09 - Gitea 工单:http://ilaer.eicp.net:8418/chengma/cmautobuy/issues/55 ## 背景与目标 Admin 原来要求密码至少 8 个字符。用户要求创建用户时改为至少 6 个字符。 首次管理员初始化、创建采购员和重置密码共用同一套密码策略,因此本任务把三个入口 统一为至少 6 个字符,避免出现前后端或不同页面规则不一致。 ## 最终方案 - 服务端最小密码长度常量从 8 改为 6,仍按 Unicode 字符数判断。 - 首次管理员、创建采购员、重置密码的密码和确认密码字段全部改为 `minlength="6"`。 - 初始化、创建和重置表单都显示“至少 6 个字符”的辅助文字;服务端校验失败 明确提示至少需要 6 个字符。 - 最大 72 个字节、确认密码、bcrypt 哈希、错误信息防账号枚举、重置后撤销 Session 等既有安全规则不变。 - 增加 5 个字符拒绝、6 个字符初始化/创建/重置成功以及模板属性和文案测试。 实际实现与建单方案一致,没有数据库或 Client API 变更。 ## 改了哪些 - `admin/service/auth.go`:最小密码长度改为 6。 - `admin/templates/auth/setup.html`:初始化管理员表单规则和提示同步为 6。 - `admin/templates/user/list.html`:创建与重置密码表单规则和提示同步为 6。 - `admin/service/auth_test.go`、`admin/service/user_test.go`:覆盖服务端边界值。 - `admin/auth_integration_test.go`、`admin/user_integration_test.go`:覆盖模板属性与文案。 - `docs/admin/01-requirements.md`、`05-ui-specification.md`、 `06-quality-security.md`:记录统一密码规则和测试要求。 ## 验收结果 | 验收标准 | 结果 | |---|---| | 5 个字符被拒绝并提示至少 6 个字符 | 通过 | | 6 个字符可初始化管理员 | 通过 | | 6 个字符可创建采购员和重置密码 | 通过 | | 三类表单密码与确认密码均为 `minlength="6"` | 通过 | | 三类表单显示至少 6 个字符的辅助文字 | 通过 | | 最大长度、确认密码、bcrypt 和 Session 撤销保持不变 | 通过 | | 页面和日志不回显密码 | 通过 | | 格式、静态检查和全量测试通过 | 通过 | | Go 1.23.0 构建和无缓存测试通过 | 通过 | ## 测试 - 执行的命令:`cd admin; gofmt -w .; go vet ./...; go test ./...` - 执行的命令:`$env:GOTOOLCHAIN="go1.23.0"; go build ./...; go test ./... -count=1; Remove-Item Env:GOTOOLCHAIN` - 结果:`go version go1.23.0 windows/amd64`;构建成功,所有测试通过。 - **没验证到的部分**:未单独进行人工浏览器验收;真实路由和模板渲染已由集成测试覆盖。 ## 相关提交 - `2cce9e3` fix: 用户密码最小长度调整为六位 (#55)