疯狂发明家/laravel5-recaptcha2

用于Laravel 5的Google Recaptcha V2包装包

1.3 2016-09-09 10:43 UTC

This package is not auto-updated.

Last update: 2024-09-20 21:42:30 UTC


README

为Laravel 5提供Recaptcha v2。受anhskohbo/no-captchagreggilbert/recaptcha启发。

安装

运行 'composer require crazyinventor/laravel5-recaptcha2' 或修改你的 composer.json

{
    "require": {
        "crazyinventor/laravel5-recaptcha2": "1.0.1"
    }
}

配置

管理页面获取recaptcha的密钥。

然后注册服务提供者。

Laravel 5.0

/config/app.php 中,将以下内容添加到 providers

'CrazyInventor\Lacaptcha\LacaptchaServiceProvider',

并添加以下内容到 aliases

'Recaptcha' => 'CrazyInventor\Lacaptcha\Facades\Lacaptcha',

Laravel 5.1及更高版本

/config/app.php 中,将以下内容添加到 providers

CrazyInventor\Lacaptcha\LacaptchaServiceProvider::class,

并添加以下内容到 aliases

'Recaptcha' => CrazyInventor\Lacaptcha\Facades\Lacaptcha::class,

发布配置文件

从你的Laravel安装目录下的shell中运行以下命令来发布recaptcha配置文件

php artisan vendor:publish

这将在你的Laravel安装目录中创建一个名为config/recaptcha.php的文件。你可以直接将你的sitekey和secret添加到该文件中,或者将密钥添加到你的.env文件中。

.env文件

RECAPTCHA_SECRETRECAPTCHA_SITEKEY添加到你的.env文件中

RECAPTCHA_SECRET=[secret-key]
RECAPTCHA_SITEKEY=[site-key]

[secret-key][site-key]替换为你的密钥。

使用

  1. 在你的表单中,使用{!! Recaptcha::render() !!}来输出标记。
  2. 为了验证你的表单,添加以下规则
$rules = [
    // ...
    'g-recaptcha-response' => 'required|recaptcha',
];

测试

在测试你的应用程序时,你可能希望跳过recaptcha部分。为此,请在测试的开始处添加以下行

// prevent validation error on captcha
Recaptcha::shouldReceive('verify')
    ->once()
    ->andReturn(true);
// provide hidden input for your 'required' validation
Recaptcha::shouldReceive('render')
    ->zeroOrMoreTimes()
    ->andReturn('<input type="hidden" name="g-recaptcha-response" value="1" />');

使用Laravel 5.4和Dusk进行测试

不幸的是,模拟在Laravel Dusk中不起作用。但你可以通过添加以下代码到你的测试中来非常容易地覆盖验证器函数。

$app = $this->app;
    $app['validator']->extend('recaptcha', function ($attribute, $value) use ($app) {
    return true;
});