martian/laracaptcha

一个Laravel扩展包,允许您无缝地在表单或RESTful API中使用hCaptcha或reCaptcha

1.0.0 2023-07-13 21:55 UTC

This package is auto-updated.

Last update: 2024-09-29 13:08:58 UTC


README

Latest Version on Packagist Total Downloads GitHub Actions

一个Laravel扩展包,允许您无缝地将Google reCAPTCHA v3、v2或hCAPTCHA集成到您的应用程序表单或Restful API中。

Image 1 hCaptcha Image 2 reCaptcha

支持的Captcha服务

安装

注意:此包需要PHP 7.4或更高版本。

您可以通过composer安装此包

composer require martian/laracaptcha

注册服务提供者

将以下内容添加到config/app.php文件中的providers数组中

Martian\LaraCaptcha\Providers\LaraCaptchaServiceProvider::class,

发布配置文件

使用以下命令发布配置文件

php artisan vendor:publish --provider="Martian\LaraCaptcha\Providers\LaraCaptchaServiceProvider"

配置

配置文件位于config/laracaptcha.php。以下选项可用

reCAPTCHA v2配置

  • 为了使用reCAPTCHA,您需要在注册您的网站以获取API密钥对。要使用reCAPTCHA v2复选框,请选择“挑战(v2)”>“我不是机器人复选框”。要使用不可见的reCAPTCHA,请选择“挑战(v2)”>“不可见reCAPTCHA徽章”。API密钥对由站点密钥和密钥组成。在config/laracaptcha.php中将default选项设置为recaptcha

    'default' => 'recaptcha',
  • version选项更改为v2以使用reCAPTCHA v2

    'drivers' => [
        'recaptcha' => [
            ...
            'version' => 'v2',
            ...
        ],
    ],
  • RECAPTCHA_SITE_KEYRECAPTCHA_SECRET_KEY添加到您的.env文件中

    RECAPTCHA_SITE_KEY=your-site-key
    RECAPTCHA_SECRET_KEY=your-secret-key

reCAPTCHA v3配置

  • 为了使用reCAPTCHA,您需要在注册您的网站以获取API密钥对。要使用reCAPTCHA v3,请选择“reCAPTCHA v3”。API密钥对由站点密钥和密钥组成。在config/laracaptcha.php中将default选项设置为recaptcha

    'default' => 'recaptcha',
  • version选项更改为v3以使用reCAPTCHA v3

    'drivers' => [
        'recaptcha' => [
            ...
            'version' => 'v3',
            ...
        ],
    ],
  • RECAPTCHA_SITE_KEYRECAPTCHA_SECRET_KEYRECAPTCHA_SITE_URL添加到您的.env文件中

    RECAPTCHA_SITE_KEY=your-site-key
    RECAPTCHA_SECRET_KEY=your-secret-key
    RECAPTCHA_SITE_URL=${APP_URL}

hCAPTCHA配置

  • 为了使用hCAPTCHA,您需要在注册您的网站以获取API密钥对。API密钥对由站点密钥和密钥组成。在config/laracaptcha.php中将default选项设置为hcaptcha

    'default' => 'hcaptcha',
  • HCAPTCHA_SITE_KEYHCAPTCHA_SECRET_KEY添加到您的.env文件中

    HCAPTCHA_SITE_KEY=10000000-ffff-ffff-ffff-000000000001
    HCAPTCHA_SECRET_KEY=0x0000000000000000000000000000000000000000

以下是默认使用的测试密钥。您不应该在生产环境中使用它们!

使用方法

要显示表单中的验证码,请根据您使用的验证码配置,按照以下步骤操作。

reCAPTCHA v2复选框和不可见

初始化JavaScript

将以下内容添加到您页面的 <head> 部分中

{!! LaraCaptcha::script() !!}

有关其他选项,请参阅 Google reCaptcha v2 Checkbox 文档

{!! LaraCaptcha::script('yourCallbackFunction', 'explicit', 'en') !!}

注意:第一个参数是回调函数名称,第二个是渲染模式(显式或onload),第三个是来自 文档 的语言代码

显示 Captcha 小部件 - 复选框

将以下内容添加到您的表单中

{!! LaraCaptcha::display() !!}

有关其他选项,请参阅 Google reCaptcha v2 Checkbox 文档

{!! LaraCaptcha::display(['data-theme' => 'dark']) !!}

注意:该参数是 widget 的属性数组

显示 Captcha 小部件 - 隐藏

将以下内容添加到您的表单中

{!! LaraCaptcha::displayInvisibleButton('formIdentifier', 'Submit Button',['data-size' => 'invisible']) !!}

注意:第一个参数是表单标识符,第二个是按钮标签(提交按钮),第三个是 widget 的属性数组,请参阅 文档。将 formIdentifier 值作为 id 添加到表单元素中

验证 Captcha

将以下内容添加到您的验证规则中

'g-recaptcha-response' => 'recaptcha',

您还可以在 Validator 门面中使用该规则

$validator = Validator::make($request->all(), [
    'g-recaptcha-response' => 'recaptcha',
]);

添加自定义验证消息

将以下内容添加到您的验证消息中

'g-recaptcha-response.recaptcha' => 'Captcha verification failed.',

或者您可以在 config/laracaptcha.php 中更改默认消息

'error_message' => 'Captcha verification failed.',

reCAPTCHA v3

初始化JavaScript

将以下内容添加到您页面的 <head> 部分中

{!! LaraCaptcha::script() !!}

有关其他选项,请参阅 Google reCaptcha v3 文档

{!! LaraCaptcha::script('yourCallbackFunction', 'explicit', 'en') !!}

显示 Captcha 小部件

将以下内容添加到您的表单中

{!! LaraCaptcha::display() !!}

有关其他选项,请参阅 Google reCaptcha v3 文档

{!! LaraCaptcha::display(['action' => 'homepage', 'custom_validation' => 'yourCustomFunction', 'recaptcha_input_identifier' => 'yourReCaptchaInputId']) !!}

注意:该参数是 widget 的属性数组,请参阅 文档 了解操作类型

hCAPTCHA v2 复选框 & 隐藏

初始化JavaScript

将以下内容添加到您页面的 <head> 部分中

{!! LaraCaptcha::script() !!}

有关其他选项,请参阅 hCAPTCHA 文档

{!! LaraCaptcha::script('yourCallbackFunction', 'onload' 'en', 'on') !!}

注意:第一个参数是回调函数名称,第二个是渲染模式(onload 或显式),第三个是来自 文档 的语言代码,第四个是 recaptchacompat 选项

显示 Captcha 小部件 - 复选框

将以下内容添加到您的表单中

{!! LaraCaptcha::display() !!}

有关其他选项,请参阅 hCAPTCHA 文档

{!! LaraCaptcha::display(['data-theme' => 'dark']) !!}

注意:该参数是 widget 的属性数组

显示 Captcha 小部件 - 隐藏

将以下内容添加到您的表单中,请参阅 隐藏式 hCAPTCHA 文档

{!! LaraCaptcha::displayInvisibleButton('formIdentifier', 'Submit Button',['data-size' => 'invisible']) !!}

注意:第一个参数是表单标识符,第二个是按钮标签(提交按钮),第三个是 widget 的属性数组,请参阅 文档

验证 Captcha

将以下内容添加到您的验证规则中

'h-captcha-response' => 'hcaptcha',

您还可以在 Validator 门面中使用该规则

$validator = Validator::make($request->all(), [
    'h-captcha-response' => 'hcaptcha',
]);

添加自定义验证消息

将以下内容添加到您的验证消息中

'h-captcha-response.hcaptcha' => 'Captcha verification failed.',

或者您可以在 config/laracaptcha.php 中更改默认消息

'error_message' => 'Captcha verification failed.',

对于其他配置,请查看 config/laracaptcha.php 文件。

测试

./vendor/bin/phpunit

更新日志

有关最近更改的更多信息,请参阅 更新日志

贡献

有关详细信息,请参阅 贡献指南

安全

如果您发现任何安全相关的问题,请通过电子邮件 hendurhance.dev@gmail.com 而不是使用问题跟踪器

鸣谢

许可

MIT 许可证 (MIT)。有关更多信息,请参阅 许可文件