buzz/laravel-h-captcha

Laravel 中的 hCaptcha

v1.0.5 2024-03-04 11:23 UTC

This package is auto-updated.

Last update: 2024-09-04 12:21:05 UTC


README

特性

  • 支持 Laravel 5/6/7/8/9/10

  • 页面上的多个验证码

  • 重置验证码

  • 自动发现服务提供者

  • 自定义请求方法

  • 使用不同的密钥

  • 运行时动态选项

安装

将以下行添加到 composer.jsonrequire 部分

{
    "require": {
        "buzz/laravel-h-captcha": "1.*"
    }
}

或者

使用 composer 安装此包

composer require buzz/laravel-h-captcha

使用 composer update 更新包或者使用 composer install 安装。

设置

支持 Laravel >=5.5 的自动发现

将 ServiceProvider 添加到 config/app.php 文件中的 providers 数组。

'Buzz\LaravelHCaptcha\CaptchaServiceProvider',

发布配置

php artisan vendor:publish --provider="Buzz\LaravelHCaptcha\CaptchaServiceProvider"

自定义 HTTP 客户端

编辑 config/captcha.php 文件中的 http_client

文件 config/captcha.php

<?php
/*
 * Secret key and Site key get on https://dashboard.hcaptcha.com/sites
 * */
return [
    'secret' => env('CAPTCHA_SECRET', 'default_secret'),
    'sitekey' => env('CAPTCHA_SITEKEY', 'default_sitekey'),
    // \GuzzleHttp\Client used is the default client
    'http_client' => \Buzz\LaravelHCaptcha\HttpClient::class,
    'options' => [
        'multiple' => false,
        'lang' => app()->getLocale(),
    ],
    'attributes' => [
        'theme' => 'light'
    ],
];

配置

CAPTCHA_SECRETCAPTCHA_SITEKEY 添加到 .env 文件中

CAPTCHA_SECRET=[secret-key]
CAPTCHA_SITEKEY=[site-key]

用法

视图示例

示例仓库 中获取示例

显示 hCaptcha

{!! app('captcha')->display($attributes) !!}

或者使用 Facade: 将 'Captcha' => '\Buzz\LaravelHCaptcha\CaptchaFacade', 添加到 config/app.php 文件中的 aliases 数组,并在模板中使用

{!! Captcha::display($attributes) !!}

或者使用表单

{!! Form::captcha($attributes) !!}

支持自定义语言

{!! app('captcha')->display($attributes = [], $options = ['lang'=> 'vi']) !!}

使用

// element attributes
$attributes = [
    'data-theme' => 'dark',
    'data-type' => 'audio',
];
// package options
$options = [
    'data-theme' => 'dark',
    'data-type'	=> 'audio',
];

有关 hCaptcha 文档的更多信息,请访问 hCaptcha 文档

请帮助我为此内容编写 README

验证

'h-captcha-response' => 'required|captcha' 添加到规则数组。

use Validator;
use Illuminate\Support\Facades\Input;

$validate = Validator::make(Input::all(), [
    'h-captcha-response' => 'required|captcha'
]);

测试

当使用 Laravel 测试功能时,您需要模拟 captcha 表单元素的响应。对于涉及 captcha 的任何表单测试,您然后可以模拟 facade 的行为

// Prevent validation error on captcha
        CaptchaFacade::shouldReceive('verify')
            ->andReturn(true);
            
// Provide hidden input for your 'required' validation
        CaptchaFacade::shouldReceive('display')
            ->andReturn('<input type="hidden" name="h-captcha-response" value="1" />');
            
// Add these when testing multiple captchas on a single page
        CaptchaFacade::shouldReceive('displayJs');
        CaptchaFacade::shouldReceive('displayMultiple');
        CaptchaFacade::shouldReceive('multiple');

贡献

https://github.com/thinhbuzz/laravel-h-captcha/pulls