跳转到内容
搜索文档

Turnstile

最后更新 查看 MarkdownAgent 设置

Turnstile 是 Cloudflare 的智能 CAPTCHA 替代方案。

Turnstile Pages Plugin 验证 Cloudflare Turnstile 令牌。

安装

npm i @cloudflare/pages-plugin-turnstile

用法

import turnstilePlugin from "@cloudflare/pages-plugin-turnstile";

/**
 * POST /api/submit-with-plugin
 */

export const onRequestPost = [
	turnstilePlugin({
		// This is the demo secret key. In prod, we recommend you store
		// your secret key(s) safely.
		secret: "0x4AAAAAAASh4E5cwHGsTTePnwcPbnFru6Y",
	}),
	// Alternatively, this is how you can use a secret key which has been stored as an environment variable
	// (async (context) => {
	//   return turnstilePlugin({secret: context.env.SECRET_KEY})(context)
	// }),
	async (context) => {
		// Request has been validated as coming from a human
		const formData = await context.request.formData();
		// Additional solve metadata data is available at context.data.turnstile
		return new Response(
			`Successfully verified! ${JSON.stringify(context.data.turnstile)}`,
		);
	},
];

此 Plugin 仅暴露单个路由,用于验证 POST 请求中 cf-turnstile-response 参数的传入 Turnstile 响应。它将在挂载的任何位置可用。在上面的示例中,它挂载在 functions/register.ts 中,因此将验证对 /register 的请求。

属性

Plugin 使用单个对象参数挂载,具有以下属性:

secret 是必填项,可在 Turnstile 仪表板中找到。

responseremoteip 是可选字符串。response 是要验证的 Turnstile 令牌。如果未提供,Plugin 将默认从 multipart/form-data 请求中提取 cf-turnstile-response 值。remoteip 是请求者的 IP 地址,默认为请求的 CF-Connecting-IP 标头。

onError 是可选函数,接受 Pages Function context 对象并返回 Promise<Response>。默认情况下,将返回人类可读的错误 Response

context.data.turnstile 将在后续 Pages Functions(包括 onError 函数)中填充 Turnstile Siteverify 响应对象

这篇文档对您有帮助吗?