コンテンツにスキップ

ターンスタイル

ターンスタイルは、CloudflareのスマートCAPTCHAの代替です。

ターンスタイルページプラグインは、Cloudflareターンスタイルトークンを検証します。

インストール

Terminal window
npm install @cloudflare/pages-plugin-turnstile

使用法

import turnstilePlugin from "@cloudflare/pages-plugin-turnstile";
/**
* POST /api/submit-with-plugin
*/
export const onRequestPost = [
turnstilePlugin({
// これはデモ用の秘密鍵です。本番環境では、秘密鍵を安全に保管することをお勧めします。
secret: "0x4AAAAAAASh4E5cwHGsTTePnwcPbnFru6Y",
}),
// 代わりに、環境変数として保存された秘密鍵を使用する方法は以下の通りです。
// (async (context) => {
// return turnstilePlugin({secret: context.env.SECRET_KEY})(context)
// }),
async (context) => {
// リクエストは人間からのものであることが検証されました
const formData = await context.request.formData();
// 追加の解決メタデータはcontext.data.turnstileで利用可能です
return new Response(
`正常に検証されました! ${JSON.stringify(context.data.turnstile)}`,
);
},
];

このプラグインは、POSTとしてcf-turnstile-responseパラメータで受信したターンスタイルの応答を検証するための単一のルートのみを公開します。これは、マウントされた場所で利用可能です。上記の例では、functions/register.tsにマウントされています。その結果、/registerへのリクエストを検証します。

プロパティ

プラグインは、以下のプロパティを持つ単一のオブジェクトパラメータでマウントされます:

secretは必須で、ターンスタイルダッシュボードで見つけることができます。

responseremoteipはオプションの文字列です。responseは検証するターンスタイルトークンです。提供されない場合、プラグインはmultipart/form-dataリクエストからcf-turnstile-responseの値を抽出することにデフォルトします。remoteipはリクエスターのIPアドレスです。これはリクエストのCF-Connecting-IPヘッダーにデフォルトします。

onErrorはオプションの関数で、Pages Functionのコンテキストオブジェクトを受け取り、ResponsePromiseを返します。デフォルトでは、人間が読みやすいエラーResponseを返します。

context.data.turnstileは、次のPages Functions(onError関数を含む)でターンスタイルのsiteverify応答オブジェクトで populated されます。