编号:W-01 严重级:medium 工作线:后台网页(web/) 来源:审查 A-08、A-21 依赖:无 被依赖:无
采用审查 A-08、A-21 的方案:
run()
ApiError
requestAdmin
/api/admin/login
/api/admin/password
/login?redirect=当前路径
main.ts
n-form
n-alert
n-result
login.go
web/src/api/http.ts、admin.ts、main.ts 或 stores/auth.ts、各 views/*.vue;internal/admin/login.go(密码长度按字符数,一处)。
web/src/api/http.ts
admin.ts
stores/auth.ts
views/*.vue
internal/admin/login.go
以下是本次复审各区审查报告的原文段落。A、M、I、P、S 开头的是原始发现编号(A 管理后台与网页、M 消息核心、I 身份认证群在线、P 传输平台部署、S SDK)。解决方案以本 issue 上方的"结论与统一方案"为准;原文里的方案与之不一致时,按上方执行。
web/src/api/http.ts:80-83
silent
web/src/api/admin.ts:32-43
router/index.ts:30-45
stores/auth.ts:11-20
:show-feedback="false"
EndpointsView.vue:194-197
SettingsView.vue:67-69
.length
EndpointsView.vue:410,441,465
GroupsView.vue:269,302
RegistrationView.vue:68
SettingsView.vue:35,62
OverviewView.vue:12-18
login.go:123-127
复审基线:main 4059a15(2026-09-30)。编号说明、各工作线的合并顺序、共享文件归属见总览 #7。
4059a15
已合入 origin/main 0c9b459。落地提交 ed788fb fix: 统一管理后台 401 与加载失败处理 (#51)。
0c9b459
ed788fb
No dependencies set.
The note is not visible to the blocked user.
编号:W-01 严重级:medium 工作线:后台网页(web/) 来源:审查 A-08、A-21
依赖:无 被依赖:无
结论与统一方案
采用审查 A-08、A-21 的方案:
run()不再重复弹ApiError)。requestAdmin遇到 401(排除/api/admin/login与/api/admin/password)时清空登录状态并跳转/login?redirect=当前路径,提示一次"登录已过期";用main.ts注册回调,避免循环引用。n-form的 rules 按 PRD 限制就地校验;服务端返回的错误放进弹窗内的n-alert。n-result或n-alert,并提供"重试"。login.go同步按字符数)。改动文件
web/src/api/http.ts、admin.ts、main.ts或stores/auth.ts、各views/*.vue;internal/admin/login.go(密码长度按字符数,一处)。与其他问题的交互 / 冲突说明
验收与测试
问题明细(各区审查原文,证据含文件与行号)
[A-08] 前端不处理 401,所有错误提示都弹两次
requestAdmin弹一次错误,run()捕获后又弹一次。web/src/api/http.ts:80-83在非silent时弹错误并抛出。web/src/api/admin.ts:32-43的run()再弹一次。router/index.ts:30-45和stores/auth.ts:11-20只在首次导航时检查登录状态。run()不再弹ApiError。requestAdmin遇到 401 时,除/api/admin/login和/api/admin/password外,都清空登录状态并跳转/login?redirect=当前路径,提示一次"登录已过期"。用main.ts注册回调,避免循环引用。web/src/api/http.ts、admin.ts、main.ts或stores/auth.ts。[A-21] 表单错误只用 toast、页面加载失败时一片空白、校验和帮助文字与规则不一致
:show-feedback="false",后端校验错误只在 toast 里一闪而过。EndpointsView.vue:194-197),但 PRD 规定名称可选。SettingsView.vue:67-69)。长度的计法前端按.length,后端按字节,端密码按字符数,三处不一致。EndpointsView.vue:410,441,465;GroupsView.vue:269,302;RegistrationView.vue:68;SettingsView.vue:35,62;OverviewView.vue:12-18;login.go:123-127。n-form的 rules 按 PRD 限制做校验,就地显示错误;服务端返回的错误放进弹窗内的n-alert。n-result或n-alert,并提供"重试"。views/*.vue、internal/admin/login.go。复审基线:main
4059a15(2026-09-30)。编号说明、各工作线的合并顺序、共享文件归属见总览 #7。已合入 origin/main
0c9b459。落地提交ed788fbfix: 统一管理后台 401 与加载失败处理 (#51)。