derekcodes / turnstile-laravel
一个用于简化 Cloudflare 的 Turnstile 验证码服务的服务器端验证的 Laravel 包。
v1.2
2024-08-27 18:00 UTC
Requires
- php: >=7.1
README
一个用于简化 Cloudflare 的 Turnstile 验证码服务的服务器端验证的 Laravel 包。
配置
首先,您需要为您的网站在 Cloudflare 和 Turnstile 中设置一个账户。
https://developers.cloudflare.com/turnstile/
安装
通过 composer 安装
composer require derekcodes/turnstile-laravel
在 .env 文件中添加您的密钥
TURNSTILE_SITE_KEY="0x4AAAAAAAXXXXXXXXXXXXXX" TURNSTILE_SECRET_KEY="0x4AAAAAAAXXXXXXXXXXXXXX"
创建一个 config/turnstile.php
php artisan vendor:publish --tag=turnstile-config
前端
确保添加 Turnstile 的前端 JavaScript: https://developers.cloudflare.com/turnstile/get-started/client-side-rendering/
为了节省您的时间,以下是一个 HTML 表单所需的 Turnstile JavaScript。请注意,我假设您正在使用 Blade 模板,因此使用了 {{ config('turnstile.site_key') }}
。
<script src="https://challenges.cloudflare.com/turnstile/v0/api.js?onload=onloadTurnstileCallback" defer></script> window.onloadTurnstileCallback = function () { turnstile.render('#your-form-id', { sitekey: '{{ config('turnstile.site_key') }}', callback: function(token) { console.log(`Challenge Success ${token}`); }, }); };
使用方法
在文件顶部添加 use
语句
use DerekCodes\TurnstileLaravel\TurnstileLaravel;
初始化 TursileLaravel
对象并调用 validate
方法,传递 Turnstile 的 JavaScript 提供的客户端响应
$turnstile = new TurnstileLaravel; $response = $turnstile->validate($request->get('cf-turnstile-response'));
确保响应有效
if (get_data($response, 'status', 0) == 1) { // TODO: add success code here }
响应
成功响应示例
{ "status": 1 }
错误响应示例
{ "status": 0, "turnstile_response": { "success": false, "error-codes": [ "invalid-input-response" ], "messages": [] } }
致谢
~ Derek Codes
Derek Codes 是关于行业中最流行语言的全面教程集合。您将找到视频、指南和可下载的资源来帮助您学习 PHP、Laravel、JavaScript、CSS 等。感谢观看!