derekcodes / turnstile-laravel

一个用于简化 Cloudflare 的 Turnstile 验证码服务的服务器端验证的 Laravel 包。

v1.2 2024-08-27 18:00 UTC

This package is auto-updated.

Last update: 2024-08-27 18:04:21 UTC


README

一个用于简化 Cloudflare 的 Turnstile 验证码服务的服务器端验证的 Laravel 包。

GitHub release GitHub repo size Packagist Downloads

配置

首先,您需要为您的网站在 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 等。感谢观看!