INTEGRITY Документация

Turnstile

Turnstile это умная альтернатива CAPTCHA от Cloudflare.

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)}`,
		);
	},
];

Этот плагин открывает только один маршрут для проверки входящего ответа Turnstile в POST в качестве cf-turnstile-response параметр. Он будет доступен везде, где подключен. В примере выше он подключен в functions/register.ts. В результате будут проверяться запросы к /register.

Свойства

Плагин подключается с помощью одного параметра-объекта со следующими свойствами:

secret обязательны, и оба значения можно найти на панели Turnstile.

response и remoteip являются необязательными строками. response является токеном Turnstile, который нужно проверить. Если он не указан, плагин по умолчанию извлечёт cf-turnstile-response значение из multipart/form-data запрос). remoteip является IP-адресом отправителя запроса. По умолчанию используется CF-Connecting-IP заголовок запроса.

onError это необязательная функция, которая принимает объект контекста Pages Function и возвращает Promise для Response. По умолчанию будет возвращена ошибка в удобочитаемом виде Response.

context.data.turnstile будет заполнен в последующих Pages Functions (в том числе для onError функцию) с объект ответа Turnstile Siteverify.