← Cloudflare Pages / pages / functions / plugins
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.