russsiq / laravel-grecaptcha
Laravel 9.x 验证器扩展,用于验证 Google reCAPTCHA v3。
Requires
- php: 8.1.*
- guzzlehttp/guzzle: ^7.4.4
- illuminate/support: 9.*
Requires (Dev)
- phpunit/phpunit: ^9.5.20
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"
此外,还支持按以下标签进行分组发布文件: config
、fonts
、lang
、views
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 许可证发布。