跳到主要内容

Cloudflare Turnstile

Turnstile 是一项 CAPTCHA 服务,可帮助保护你的网站免受垃圾信息和滥用。本指南将带你完成将 Turnstile 与 Logto 集成的过程。

前置条件

  • 一个 Cloudflare 账户

设置步骤

  1. 前往 Cloudflare 控制台 并选择你的账户。
  2. 导航到 Turnstile > Add widget
  3. 按照以下信息填写表单:
    • Widget name:你希望为该 widget 命名的任意名称
    • Hostname:Logto 的端点域名,例如 https://[tenant-id].logto.app
    • Widget Mode:保持默认即可

获取 site key 和 secret key

  1. 找到你刚刚创建的 widget,并点击 Manage widget
  2. 向下滚动到底部,复制 Site keySecret key

Bring your UI

如果你使用 Bring your UI,Logto 无法自动在你的自定义前端注入或运行 Turnstile。在 Logto 控制台启用 CAPTCHA 后,你的自定义 UI 必须加载 Turnstile 脚本,渲染 widget,并将返回的 token 发送给体验 (Experience) API。

在你的自定义 UI 中加载 Turnstile 脚本:

<script src="https://challenges.cloudflare.com/turnstile/v0/api.js" async defer></script>

为 widget 添加一个容器:

<div id="turnstile-container"></div>

在开始交互前,使用你的 site key 渲染 Turnstile,并将回调 token 作为 captchaToken 传递到 PUT /api/experience

const captchaToken = await new Promise((resolve, reject) => {
window.turnstile.render('#turnstile-container', {
sitekey: '<siteKey>',
callback: resolve,
'error-callback': reject,
size: 'flexible',
});
});

await fetch('/api/experience', {
method: 'PUT',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({
interactionEvent: 'SignIn',
captchaToken,
}),
});

启用 CAPTCHA

在你设置好 CAPTCHA 提供商后,记得启用 CAPTCHA 机器人防护。

前往安全 (Security) 页面,找到 CAPTCHA 标签页,打开“启用 CAPTCHA”的开关按钮。