Cloudflare Turnstile
Turnstile 是一项 CAPTCHA 服务,可帮助保护你的网站免受垃圾信息和滥用。本指南将带你完成将 Turnstile 与 Logto 集成的过程。
前置条件
- 一个 Cloudflare 账户
设置步骤
- 前往 Cloudflare 控制台 并选择你的账户。
- 导航到 Turnstile > Add widget。
- 按照以下信息填写表单:
- Widget name:你希望为该 widget 命名的任意名称
- Hostname:Logto 的端点域名,例如 https://[tenant-id].logto.app
- Widget Mode:保持默认即可
获取 site key 和 secret key
- 找到你刚刚创建的 widget,并点击 Manage widget。
- 向下滚动到底部,复制 Site key 和 Secret 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”的开关按钮。