ryangjchandler/laravel-cloudflare-turnstile

一个简单的包,帮助集成 Cloudflare Turnstile。

v1.1.0 2024-03-12 21:17 UTC

README

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

此包提供设置和验证 Cloudflare Turnstile CAPTCHA 响应的辅助工具。

安装

您可以通过 Composer 安装此包

composer require ryangjchandler/laravel-cloudflare-turnstile

然后,您应该在您的 config/services.php 文件中添加以下配置值

return [

    // ...,

    'turnstile' => [
        'key' => env('TURNSTILE_SITE_KEY'),
        'secret' => env('TURNSTILE_SECRET_KEY'),
    ],

];

访问 Cloudflare 创建您的网站密钥和密钥,并将它们添加到您的 .env 文件中。

TURNSTILE_SITE_KEY="1x00000000000000000000AA"
TURNSTILE_SECRET_KEY="2x0000000000000000000000000000000AA"

用法

在您的布局文件中,使用 @turnstileScripts Blade 指令包含 Turnstile 脚本。这应该添加到您的文档的 <head> 中。

<html>
    <head>
        @turnstileScripts()
    </head>
    <body>
        {{ $slot }}
    </body>
</html>

完成此操作后,您可以在 <form> 内使用 <x-turnstile /> 组件以配置您的网站密钥输出适当的标记。

<form action="/" method="POST">
    <x-turnstile />

    <button>
        Submit
    </button>
</form>

在服务器上,使用提供的验证规则验证 CAPTCHA 响应。

use Illuminate\Validation\Rule;

public function submit(Request $request)
{
    $request->validate([
        'cf-turnstile-response' => ['required', Rule::turnstile()],
    ]);
}

如果您不想使用宏,您可以通过依赖注入或 app() 助手从容器中解析规则实例。

use RyanChandler\LaravelCloudflareTurnstile\Rules\Turnstile;

public function submit(Request $request, Turnstile $turnstile)
{
    $request->validate([
        'cf-turnstile-response' => ['required', $turnstile],
    ]);
}
use RyanChandler\LaravelCloudflareTurnstile\Rules\Turnstile;

public function submit(Request $request)
{
    $request->validate([
        'cf-turnstile-response' => ['required', app(Turnstile::class)],
    ]);
}

自定义小部件

您可以通过向 <x-turnstile /> 组件传递属性来自定义小部件。

有关这些参数的更多信息,请参阅 官方文档

<form action="/" method="POST">
    <x-turnstile
        data-action="login"
        data-cdata="sessionid-123456789"
        data-callback="callback"
        data-expired-callback="expiredCallback"
        data-error-callback="errorCallback"
        data-theme="dark"
        data-tabindex="1"
    />

    <button>
        Submit
    </button>
</form>

此包还可以与 Livewire 无缝集成。在验证成功后,wire:model 内指定的属性将使用 Turnstile 令牌更新。

<x-turnstile wire:model="yourModel" />

测试

composer test

更新日志

请参阅 更新日志 了解最近的变化信息。

贡献

请参阅 贡献指南 了解详细信息。

安全漏洞

请参阅 我们的安全策略 了解如何报告安全漏洞。

鸣谢

许可证

MIT 许可证 (MIT)。请参阅 许可证文件 了解更多信息。