russsiq/laravel-grecaptcha

Laravel 9.x 验证器扩展,用于验证 Google reCAPTCHA v3。

0.3.1 2022-06-14 23:31 UTC

This package is auto-updated.

Last update: 2024-09-15 04:15:49 UTC


README

Laravel 9.x 验证器扩展,用于使用 Google reCAPTCHA v3。它通过向用户操作评估服务发起请求来阻止机器人发送表单,这些机器人通常是垃圾邮件发送者。

在使用此包之前,请注册并获取 密钥密钥https://g.co/recaptcha/v3

安装

要在 Laravel 项目中添加依赖项,请使用 Composer 包管理器

composer require russsiq/laravel-grecaptcha

如果您的应用程序在 composer.json 文件的 extra 部分的 dont-discover 指令中启用了包发现,则需要在 config/app.php 文件中手动添加以下内容

  • 服务提供商部分 providers
Russsiq\GRecaptcha\GRecaptchaServiceProvider::class,
  • 类别名部分 aliases
'GRecaptcha' => Russsiq\GRecaptcha\Support\Facades\GRecaptcha::class,

发布包文件

通过 Artisan 命令行界面发布(复制)所有可用文件以进行重写和微调包是通过接口完成的

php artisan vendor:publish --provider="Russsiq\GRecaptcha\GRecaptchaServiceProvider"

此外,还支持按以下标签进行分组发布文件: configfontslangviews

php artisan vendor:publish --provider="Russsiq\GRecaptcha\GRecaptchaServiceProvider" --tag=config --force
php artisan vendor:publish --provider="Russsiq\GRecaptcha\GRecaptchaServiceProvider" --tag=fonts --force
php artisan vendor:publish --provider="Russsiq\GRecaptcha\GRecaptchaServiceProvider" --tag=lang --force
php artisan vendor:publish --provider="Russsiq\GRecaptcha\GRecaptchaServiceProvider" --tag=views --force

配置

密钥密钥 插入到项目中的 config/g_recaptcha.php 文件中相应的字段。

除了 Google 的 reCAPTCHA,该扩展还支持空驱动程序和基于四位数字的输入码的 reCAPTCHA 驱动程序。选择是通过扩展配置文件 config/g_recaptcha.php 进行的

return [
  // Драйвер, используемый по умолчанию.
  // Поддерживаемые типы: `nullable`, `image_code`, `google_v3`.
  'driver' => env('GRECAPTCHA_DRIVER', 'google_v3'),

  // Настройки драйверов.
  'drivers' => [
    // ...code
  ],
];

使用

使用 @g_recaptcha_input 指令将隐藏字段添加到要处理的表单中。例如

@error ('g-recaptcha-response')
<div class="alert alert-danger" role="alert">
    @lang('g_recaptcha::g_recaptcha.messages.fails')
</div>
@enderror

<form action="/profile" method="POST">
    @csrf

    @if (config('g_recaptcha.used'))
    <div class="form-group row">
        <div class="col-md-4">
            @g_recaptcha_input
        </div>
    </div>
    @endif

    <!-- ...code -->
</form>

使用 @g_recaptcha_script 指令在主模板的 </body> 标签之前添加 JavaScript。

这两个指令都可以接受一个参数,可以指定模板的相对路径。

在表单提交后,如果应用了异步请求(AJAX),则可以使用 JavaScript 函数 grecaptcha_reload(); 更新隐藏字段。

这两个指令不是必需的:您可以自行创建隐藏字段和 JavaScript 逻辑。

声明验证规则

/**
 * Получить массив правил валидации,
 * которые будут применены к запросу.
 * @return array
 */
public function rules(): array
{
    return [
        'title' => [
            // ...code
        ],

        'body' => [
            // ...code
        ],

        'g-recaptcha-response' => [
            'bail',
            config('g_recaptcha.used') ? 'required' : 'nullable',
            'string',
            'g_recaptcha',
        ],
    ];
}

测试

要运行测试,请使用以下命令

composer run-script test

要运行测试并生成 HTML 格式的敏捷文档(写入 tests/testdox.html 文件),请使用以下命令

composer run-script testdox

卸载包

要卸载 Laravel 项目中的包,请使用以下命令

composer remove russsiq/laravel-zipper

许可证

laravel-grecaptcha 是一个开源软件,根据 MIT 许可证发布。