desktop-login-unlock

20260916-201504 轮 · 看它的历史
  ✅ 前置:守卫已清干净
       {"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