[H-07][low] 重置登录密码时踢线失败被吞掉,审计仍记 ok #50

Closed
opened 2026-09-30 13:57:03 +08:00 by nixevol · 1 comment
Owner

编号:H-07 严重级:low 工作线:管理后端(internal/admin) 来源:审查 A-18
依赖:B-04 (#11) 被依赖:无

结论与统一方案

采用审查 A-18 的方案:resetKick 出错时回退到 kickEndpoint,审计结果记为 ok_kick_failed 并写错误日志;停用、删除的钩子出错时同样写日志。broker 侧"清会话失败仍然断开"在 B-04 第 4 点完成。

改动文件

internal/admin/endpoints.go。

与其他问题的交互 / 冲突说明

依赖 B-04 对 fatalKick 行为的调整。

验收与测试

注入会报错的 PasswordResetKick,断言调用了 KickEndpoint,审计结果正确。


问题明细(各区审查原文,证据含文件与行号)

以下是本次复审各区审查报告的原文段落。A、M、I、P、S 开头的是原始发现编号(A 管理后台与网页、M 消息核心、I 身份认证群在线、P 传输平台部署、S SDK)。解决方案以本 issue 上方的"结论与统一方案"为准;原文里的方案与之不一致时,按上方执行。

[A-18] 回归:重置密码时踢线失败被吞掉,审计仍记 ok

  • 严重级:low
  • 分类:逻辑
  • 现象与影响:Session.fatalKick 在 ClearSession 写库失败时直接返回,不发 fatal 也不断开。停用和删除有 identity 兜底断开,重置密码没有。结果设备仍在线,审计却写 ok。
  • 证据:
    • endpoints.go:542:_, _ = h.passwordResetKick(...)。
    • broker/session.go:316-321。
    • 停用和删除的兜底在 identity/lifecycle.go:131-138。
  • 文档依据:PRD F02(约 152 行)"管理员重置登录密码……当前连接被踢下线"。
  • 为何不是故意设计:这是 #4 接线遗留的问题。
  • 解决方案:resetKick 出错时回退到 h.kickEndpoint,审计结果记为 ok_kick_failed 并写错误日志。停用和删除的钩子出错时同样写日志。可选:N 线让 fatalKick 在清会话失败时仍然断开连接。
  • 改动文件:internal/admin/endpoints.go;可选 internal/broker/session.go(N 线)。
  • 交互/冲突风险:无。
  • 需补测试:注入会报错的 PasswordResetKick,断言调用了 KickEndpoint,审计结果正确。
  • 置信度:代码阅读确定

复审基线:main 4059a15(2026-09-30)。编号说明、各工作线的合并顺序、共享文件归属见总览 #7。

**编号**:H-07 **严重级**:low **工作线**:管理后端(internal/admin) **来源**:审查 A-18 **依赖**:B-04 (#11) **被依赖**:无 ### 结论与统一方案 采用审查 A-18 的方案:`resetKick` 出错时回退到 `kickEndpoint`,审计结果记为 `ok_kick_failed` 并写错误日志;停用、删除的钩子出错时同样写日志。broker 侧"清会话失败仍然断开"在 B-04 第 4 点完成。 ### 改动文件 `internal/admin/endpoints.go`。 ### 与其他问题的交互 / 冲突说明 依赖 B-04 对 `fatalKick` 行为的调整。 ### 验收与测试 注入会报错的 `PasswordResetKick`,断言调用了 `KickEndpoint`,审计结果正确。 --- ### 问题明细(各区审查原文,证据含文件与行号) > 以下是本次复审各区审查报告的原文段落。A、M、I、P、S 开头的是原始发现编号(A 管理后台与网页、M 消息核心、I 身份认证群在线、P 传输平台部署、S SDK)。**解决方案以本 issue 上方的"结论与统一方案"为准**;原文里的方案与之不一致时,按上方执行。 #### [A-18] 回归:重置密码时踢线失败被吞掉,审计仍记 ok - 严重级:low - 分类:逻辑 - 现象与影响:`Session.fatalKick` 在 `ClearSession` 写库失败时直接返回,不发 fatal 也不断开。停用和删除有 identity 兜底断开,重置密码没有。结果设备仍在线,审计却写 ok。 - 证据: - `endpoints.go:542`:`_, _ = h.passwordResetKick(...)`。 - `broker/session.go:316-321`。 - 停用和删除的兜底在 `identity/lifecycle.go:131-138`。 - 文档依据:PRD F02(约 152 行)"管理员重置登录密码……当前连接被踢下线"。 - 为何不是故意设计:这是 #4 接线遗留的问题。 - 解决方案:`resetKick` 出错时回退到 `h.kickEndpoint`,审计结果记为 `ok_kick_failed` 并写错误日志。停用和删除的钩子出错时同样写日志。可选:N 线让 `fatalKick` 在清会话失败时仍然断开连接。 - 改动文件:`internal/admin/endpoints.go`;可选 `internal/broker/session.go`(N 线)。 - 交互/冲突风险:无。 - 需补测试:注入会报错的 `PasswordResetKick`,断言调用了 `KickEndpoint`,审计结果正确。 - 置信度:代码阅读确定 --- <sub>复审基线:main `4059a15`(2026-09-30)。编号说明、各工作线的合并顺序、共享文件归属见总览 #7。</sub>
nixevol added the P3-lowlane/adminreview-2026-09-30 labels 2026-09-30 13:57:03 +08:00
Author
Owner

已合入 origin/main 0c9b459。落地提交 8f47167 fix: 重置密码踢线失败时回退断开并记 ok_kick_failed (#50)。

已合入 origin/main `0c9b459`。落地提交 `8f47167` fix: 重置密码踢线失败时回退断开并记 ok_kick_failed (#50)。
Sign in to join this conversation.