desktop-login-unlock
✅ 前置:守卫已清干净
{"cur":0,"max":8,"extra_left":0,"extra_total":0,"extra_by":0,"extra_at":0,"blocked":false,"lock_remain":0}
=== A · 连续输错口令 → 硬锁 ===
✅ A1 打满 8 次后被锁(文案是"登录失败次数过多")
{"status":1,"info":"0","data":"登录失败次数过多,请 900 秒后重试"}
✅ A2 面板口径也看得到锁着
{"cur":0,"max":8,"extra_left":0,"extra_total":0,"extra_by":0,"extra_at":0,"blocked":true,"lock_remain":899}
=== B · 锁定期内正确口令也被拒 ===
✅ B1 🔴 拿正确口令也被锁挡住(否则下面 D 组证明不了任何东西)
{"status":1,"info":"0","data":"登录失败次数过多,请 899 秒后重试"}
=== C · 锁定要有观察点 ===
✅ C1 🔴 jnc_sys_log 多了 security_login_blocked / actor_type=ddm
43 → 44
✅ C2 🔴 再被拒 5 次,审计**不再增长**(按 (scope,账号) 5 分钟去重)
44 → 44
=== D · 管理员管理页解除锁定 ===
✅ D1 列表页出现「解除登录锁定」入口
✅ D2 并写明还剩多久
还剩约 15 分钟)
✅ D3a 前置:桌面端账号(990864)那一行**有**解锁 href(证明这个形态确实会渲染)
guanliyuanguanli_guanliyuan_unlock_post/id/990864
✅ D3b 🔴 守卫:后台管理员那一行**没有**解锁入口(它走的是另一套桶,刻意不给)
guanliyuanguanli_guanliyuan_unlock_post/id/990986
✅ D4 🔴 纯 GET 被 method 闸拒
✅ D5 解锁接口返回成功
✅ D6 守卫状态清零
{"cur":0,"max":8,"extra_left":0,"extra_total":0,"extra_by":0,"extra_at":0,"blocked":false,"lock_remain":0}
✅ D7 🔴🔴 解锁之后拿正确口令**真的登进去了**(清的是对的键)
{"status":1,"info":"1","data":{"token":"990864_f7257e8d503a420b2763473adde6f7f1a9f84d8a947c5ee2","access_token":"990864_f7257e8d503a420b2763473adde6f7f1a9f84d8a947c5ee2","refresh_token":"990864_966f37
=== E · 只认 vip 100/101 ===
✅ E1 🔴 拿后台管理员(vip=10)的 id 解锁 → 拒(只认桌面端专用账号)
✅ E2 🔴 拿超管(1)的 id 解锁 → 拒
✅ E3 没有位 41 → 解锁端点被拒
[还原] e2e_admin10.userauth = [12,2,66,65,3] ✔
PASS=17 FAIL=0