
没开启验证码啊,总是提示这个错误,怎么强制登录后台啊

查到原因了,@
ahfanxin 感谢提供反馈,修复完毕会发布1.1.26版本。
第一层(最致命):验证码框永远不可能出现。app/Views/auth/login.php:33 把验证码块写成 display:none,只有 pow.js 里 rc.mode === 'captcha' 这个分支才会把它显示出来。但服务端 app/Helpers/PoW.php:39 是 $mode = 'normal'; 硬编码——那条分支是死代码,从 1.0.23 到现在的版本都一样。也就是说验证码在任何情况下都不会出现在界面上。
第二层:PoW 一旦失败就永久锁死。pow.js:171 拿不到 challenge 时的兜底是 {mode:'normal', challenge:''},接着 solveNonce('') 在 pow.js:55 直接 return '',然后照常提交空 nonce。服务端 PoW::validate('') 必然 false → 要求图片验证码 → 界面没有框 → 「验证码错误」→ 重试还是同一条路。
第三层:PoW 为什么会失败。 按可能性排序:
pow.js:26 硬编码了 '/api/pow',没带 BASE_PATH。 同一个项目里 auth.js:55(验证码刷新)和 main.php:606(SW 注册)都用了 (window.BASE_PATH || ''),唯独 pow.js 漏了。站点装在二级目录(如 /bbs)时,请求会打到域名根 → 404 → 必失败。这是唯一一个 100% 必然失败的结构性缺陷,我实测 /nonexistent-base/api/pow 确实 404。/api/pow 被 CDN / WAF / 宝塔防火墙拦掉(Cloudflare Bot Fight、宝塔「网站防火墙」对 /api/* 的规则很常见)。assets/themes/<主题>/layouts/main.php 里没有 main.php:545 那句 pow.js 引入;或浏览器插件拦截。xhr.timeout = 8000,2 核 2G 的 VPS 加上反代,8 秒拿不到就 fallback。ahfanxin 发表于:没开启验证码啊,总是提示这个错误,怎么强制登录后台啊
1.1.26 版本已经发布,请 在浏览器按f12,找到Console 执行:document.querySelector('[data-pow-captcha]').style.display='' 验证码就出来了,你先用这个登录进去,进行更新即可。
請 登入