pixelopen / cloudflare-turnstile-bundle
一个简单的包,帮助在 Symfony 中集成 Cloudflare Turnstile。
0.4.0
2024-05-31 09:37 UTC
Requires
- php: >=7.4
- symfony/form: ^5.0|^6.0|^7.0
- symfony/framework-bundle: ^5.0|^6.0|^7.0
- symfony/http-client: ^5.0|^6.0|^7.0
- symfony/twig-bundle: ^5.0|^6.0|^7.0
- symfony/validator: ^5.0|^6.0|^7.0
- symfony/yaml: ^5.0|^6.0|^7.0
Requires (Dev)
- phpstan/phpstan: ^1.8
- phpstan/phpstan-symfony: ^1.2
- phpunit/phpunit: ^9.6
- rector/rector: ^0.14.5
- symplify/easy-coding-standard: ^11.1
README
本包提供了设置和验证 Cloudflare Turnstile CAPTCHA 响应的辅助工具。
安装
您可以通过 Composer 安装此包
composer require pixelopen/cloudflare-turnstile-bundle
将包添加到 config/bundles.php 文件中
PixelOpen\CloudflareTurnstileBundle\PixelOpenCloudflareTurnstileBundle::class => ['all' => true]
在 config/packages/pixel_open_cloudflare_turnstile.yaml 中添加一个配置文件
pixel_open_cloudflare_turnstile: key: '%env(TURNSTILE_KEY)%' secret: '%env(TURNSTILE_SECRET)%' enable : true
访问 Cloudflare 创建您的站点密钥和密钥,并将它们添加到您的 .env
文件中。
TURNSTILE_KEY="1x00000000000000000000AA"
TURNSTILE_SECRET="2x0000000000000000000000000000000AA"
与您的 Symfony 表单一起使用
创建一个表单类型,并插入一个 Turnstile 类型来添加 Cloudflare Turnstile
<?php namespace App\Form; use App\Entity\Contact; use PixelOpen\CloudflareTurnstileBundle\Type\TurnstileType; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\Extension\Core\Type\SubmitType; use Symfony\Component\Form\Extension\Core\Type\TextareaType; use Symfony\Component\Form\Extension\Core\Type\TextType; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\OptionsResolver\OptionsResolver; class ContactType extends AbstractType { public function buildForm(FormBuilderInterface $builder, array $options): void { $builder ->add('name', TextType::class, ['label' => false, 'attr' => ['placeholder' => 'name']]) ->add('message', TextareaType::class, ['label' => false, 'attr' => ['placeholder' => 'message']]) ->add('security', TurnstileType::class, ['attr' => ['data-action' => 'contact', 'data-theme' => 'dark'], 'label' => false]) ->add('submit', SubmitType::class) ; } public function configureOptions(OptionsResolver $resolver): void { $resolver->setDefaults([ 'data_class' => Contact::class, ]); } }
测试
以下为测试目的使用的站点密钥和密钥
站点密钥
密钥
待办事项
- 添加 phpunit 来测试字段
和验证器
许可证
MIT 许可证 (MIT)。请参阅 许可证文件 了解更多信息。