mediamtx.yml
/admin/
authMethod: internal
authInternalUsers
action: api
/admin
/admin/*
/v3/*
sessionStorage
internal/api/api.go
internal/api/admin/*
internal/api/*_test.go
go test ./internal/api ./internal/core
python dev_scripts/harness.py check --strict
本次为已确认管理页面上的单一轻量登录状态,不新增信息架构。用户于 2026-08-28 明确确认:HTTP、允许局域网、HTTPS 后续。UI 采用现有页面视觉语言,单一主操作、可见标签、密码显隐、内联错误、提交中禁用、44px 触控目标和可见焦点;无需另建完整原型。
登录与 HTTP 局域网安全边界属于长期产品事实。实现完成后更新 Gitea Wiki 的 Product-Requirements-Overview / Architecture-and-Code-Map / Troubleshooting,并同步 docs/maintainer/ 镜像;禁止直接编辑镜像。
docs/maintainer/
18f5196c137cc99080089d9421d89b50549c8d63
origin/main
docs/maintainer
node --check internal/api/admin/app.js
go test ./internal/api -run '^TestAdmin' -count=1
go test ./internal/core -run '^
go build ./...
check --strict
sync --check
go test ./internal/api
go test ./internal/core
736e3cdfaa941073735475ac5a2b8962ed9ed566
6991cffa6aea712d358645cf0942550bd277175a
1a3d725f5518e3cbed93760a58385af21ca34f92
实现完成,待用户验收
工单 #4 已完成实现并推送。
18f5196c
状态保持为“实现完成,待用户验收”,工单不关闭。
No dependencies set.
The note is not visible to the blocked user.
原始需求
mediamtx.yml管理;当前使用 HTTP,允许局域网访问,HTTPS 后续再做。目标
/admin/提供无框架、原生 HTML/CSS/JS 登录页。authMethod: internal、authInternalUsers和action: api权限认证。非目标
已确认方案
/admin与/admin/*静态资源可匿名加载,/v3/*Control API 继续强制执行 MediaMTX 认证中间件。sessionStorage保存当前标签页所需的 Authorization 值;刷新保留,关闭标签页清除。mediamtx.yml使用命名管理员和action: api;真实凭据不纳入提交。前置工单
/admin/页面继续增量实现。#3 当前待验收,不改变其 RTSP 源管理范围。影响范围
internal/api/api.go:管理静态资源与 API 认证中间件的路由边界。internal/api/admin/*:登录、会话、退出和认证请求。internal/api/*_test.go:认证路由、登录静态资源及 API 401/成功行为。mediamtx.yml:命名管理员配置(不提交真实凭据)。风险与安全边界
sessionStorage不是服务端 Session;其目的仅是避免持久化到磁盘,不能替代 HTTPS。/v3/*返回 401。回退方式
验收标准
/admin/能显示登录页,不触发浏览器原生认证弹窗action: api凭据可进入现有管理页并执行原功能/v3/*仍返回 401验证方法
go test ./internal/api ./internal/core、相关前端测试和python dev_scripts/harness.py check --strict。设计证据
本次为已确认管理页面上的单一轻量登录状态,不新增信息架构。用户于 2026-08-28 明确确认:HTTP、允许局域网、HTTPS 后续。UI 采用现有页面视觉语言,单一主操作、可见标签、密码显隐、内联错误、提交中禁用、44px 触控目标和可见焦点;无需另建完整原型。
文档影响
登录与 HTTP 局域网安全边界属于长期产品事实。实现完成后更新 Gitea Wiki 的 Product-Requirements-Overview / Architecture-and-Code-Map / Troubleshooting,并同步
docs/maintainer/镜像;禁止直接编辑镜像。实施结果
18f5196c137cc99080089d9421d89b50549c8d63origin/main/admin/*匿名加载登录外壳;/v3/*保持action: api强制认证。docs/maintainer镜像已同步。验证结果
node --check internal/api/admin/app.js:通过。go test ./internal/api -run '^TestAdmin' -count=1:通过。go test ./internal/core -run '^:编译通过。go build ./...:通过。check --strict与 Wikisync --check通过。go test ./internal/api与go test ./internal/core全包运行被本机已有 MediaMTX 占用固定测试端口(含 9997、8000、1935)阻断;失败均为 bind 冲突,已由聚焦测试、编译和真实独立端口集成覆盖本单风险。文档证据
736e3cdfaa941073735475ac5a2b8962ed9ed5666991cffa6aea712d358645cf0942550bd277175a1a3d725f5518e3cbed93760a58385af21ca34f92状态
实现完成,待用户验收
工单 #4 已完成实现并推送。
18f5196c状态保持为“实现完成,待用户验收”,工单不关闭。