mcaskill/charcoal-recaptcha

Charcoal 的 Google reCAPTCHA

v0.5.0 2018-05-23 15:13 UTC

This package is auto-updated.

Last update: 2024-09-22 02:16:47 UTC


README

License Latest Stable Version Code Quality Coverage Status Build Status

Google reCAPTCHA for Charcoal

Charcoal 提供的 Google reCAPTCHA 客户端库 服务提供者。

此包可以作为 PSR-7 中间件或作为服务层的对象使用。

安装

composer require mcaskill/charcoal-recaptcha

查看 composer.json 以了解依赖项。

包含内容

  • Charcoal\ReCaptcha\CaptchaServiceProvider: Pimple 服务提供者。
  • Charcoal\ReCaptcha\CaptchaConfig: 配置 CAPTCHA 服务。
  • Charcoal\ReCaptcha\CaptchaAwareTrait: 与 CAPTCHA 服务接口的便捷特性。
  • Charcoal\ReCaptcha\Captcha: 处理 reCAPTCHA 客户端的服务的实例。
  • Charcoal\ReCaptcha\LocalizedCaptcha: 具备 翻译器感知 的服务的变体。

使用方法

use Charcoal\ReCaptcha\Captcha;

$captcha = new Captcha([
    'config' => [
        'public_key'  => '',
        'private_key' => '',
    ]
]);

// As middleware
$app->post('/signup', '')->add($captcha);

// As standalone, with direct user input
$captcha->verify($input, $ip);

// With a PSR-7 request
$captcha->verifyRequest($request);

// Display the widget in your views
echo $captcha->display(
    [
        'data-theme' => 'dark',
        'data-type' =>  'audio',
    ],
    [
        'hl' => 'fr'
    ]
);

默认情况下,Captcha 适配器将延迟 ReCaptcha 的实例化,直到首次验证请求。

自定义 ReCaptcha 类

可以使用 client_class 选项替换 ReCaptcha 类。

use Charcoal\ReCaptcha\Captcha;
use MyApp\ MyCustomReCaptcha;

$captcha = new Captcha([
    'config' => [
        'public_key'  => '',
        'private_key' => '',
    ],
    'client_class' =>  MyCustomReCaptcha::class
]);

自定义 ReCaptcha 实例

可以使用 client 选项分配 ReCaptcha 类的实例。

use Charcoal\ReCaptcha\Captcha;
use ReCaptcha\ReCaptcha;
use ReCaptcha\RequestMethod\CurlPost;

$client = new ReCaptcha('', new CurlPost());

$captcha = new Captcha([
    'config' => [
        'public_key'  => '',
        'private_key' => '',
    ],
    'client' => $client
]);

服务提供者

如果使用 CaptchaServiceProvider,则提供以下内容。

参数

服务

  • charcoal/captcha: Captcha 的实例。

注册

通过 Charcoal 配置文件

{
    "apis": {
        "google": {
            "recaptcha": {
                "public_key": "",
                "private_key": ""
            }
        },
    },
    "service_providers": {
        "charcoal/re-captcha/captcha": {}
    }
}

通过 PHP

$container->register(new Charcoal\ReCaptcha\CaptchaServiceProvider(), [
    'charcoal/captcha/config' => [
        'public_key'  => '',
        'private_key' => ''
    ]
]);

致谢

此包灵感来源于

许可

  • Charcoal reCAPTCHA 组件受 MIT 许可证的许可。有关详细信息,请参阅 LICENSE
  • Charcoal 框架受 MIT 许可证的许可。有关详细信息,请参阅 LICENSE
  • Google reCAPTCHA PHP 客户端库受 BSD 许可证的许可。有关详细信息,请参阅 LICENSE 文件。