由于 Google reCAPTCHA 在国内访问受限,V2board 默认的注册验证码在部分网络环境下无法正常加载。Cloudflare Turnstile 在接口协议上兼容 reCAPTCHA,可作为直接替代方案,迁移过程仅涉及两个文件的修改。
1. 修改后端校验地址
编辑 vendor/google/recaptcha/src/ReCaptcha/ReCaptcha.php,将第 52 行的 SITE_VERIFY_URL 替换为 Turnstile 的校验端点:
public const SITE_VERIFY_URL = 'https://challenges.cloudflare.com/turnstile/v0/siteverify';Turnstile 的 siteverify 接口与 reCAPTCHA v2 的请求/响应结构保持一致,上层调用逻辑无需改动。
2. 替换前端加载脚本
编辑 public/theme/default/assets/umi.js,定位到第 18161 行,将 reCAPTCHA 的 api.js 引用替换为 Turnstile:
return "https://challenges.cloudflare.com/turnstile/v0/api.js?onload=".concat(x, "&render=explicit");若 umi.js 已被压缩或经过自定义修改,可通过全局搜索 recaptcha/api.js 定位目标位置。
3. 配置 Turnstile 站点密钥
在 Cloudflare 控制台的 Turnstile 中新建站点,获取 Site Key 与 Secret Key,填入 V2board 后台原 reCAPTCHA 配置项。字段结构完全一致,数据库无需调整。
说明
- Turnstile 默认采用无交互验证模式,用户端通常无需手动点击
- 修改完成后若前端验证组件未更新,清理浏览器缓存或强制刷新
umi.js即可