origami/captcha

为 Laravel 项目提供简单的 Google Recaptcha 集成

3.0.0 2024-05-28 10:56 UTC

This package is auto-updated.

Last update: 2024-09-28 11:43:16 UTC


README

此包添加了验证规则和控制台特质,以便更容易与 Google Recaptcha 集成

安装

通过 Composer 安装此包。

composer require origami/captcha

要求

当前,此包设计为与 Laravel >= 10 一起使用。如果您需要 5.8 支持,请使用版本 1。如果您需要 6-7 支持,请使用版本 2。

设置

  1. https://www.google.com/recaptcha/admin 注册 Google Recaptcha 账户

  2. 您应该在 config/services.php 文件中添加一个 recatpcha 部分

    
    'recaptcha' => [
        'key' => env('RECAPTCHA_KEY'),
        'secret' => env('RECAPTCHA_SECRET'),
    ],
  1. 使用密钥和密钥更新您的 .env 文件
RECAPTCHA_KEY=
RECAPTCHA_SECRET=
  1. 在您的验证文件(例如 resources/lang/en/validation.php)中添加一条语言行

    'recaptcha' => 'The reCAPTCHA check was invalid',

用法

验证器

$validator = Validator::make($request->all(), [
    'recaptcha' => [new Origami\Captcha\Rules\Recaptcha],
]);

控制器验证

(假设您的控制器具有 ValidatesRequests 特质)

class Contact extends Controller
{
    public function store(Request $request)
    {
        $this->validate($request, [
            'recatpcha' => [new Origami\Captcha\Rules\Recaptcha]
        ]);
    }
}

更改 Google 密钥

如果您有多个 Recaptcha 密钥(例如,用于不同版本),您可以在规则参数中自定义。否则,它将默认为 config('services.recaptcha.secret')

class Contact extends Controller
{
    public function store(Request $request)
    {
        $this->validate($request, [
            'recatpcha' => [new Origami\Captcha\Rules\Recaptcha(secret: '123')]
        ]);
    }
}

具有 ValidatesCaptcha 特质的控制器

use Origami\Captcha\ValidatesCaptcha;

class Contact extends Controller
{
    use ValidatesCaptcha;

    public function store(Request $request)
    {
        $this->validateRecaptcha($request);

        // The above will throw a ValidationException when the recaptcha fails.
    }

}

Blade 辅助函数

此包注册了两个 Blade 辅助函数

@recaptchaField 等同于

<div class="g-recaptcha" data-sitekey="{{ config('services.recaptcha.key') }}"></div>

@recaptchaScript 等同于

<script src="https://www.google.com/recaptcha/api.js"></script>

升级

从 v2 升级到 v3

版本 3 是为了添加 Laravel 11.x 支持,并取消对 10.x 之前版本的支持。这是一个破坏性变更,因为现在包依赖于 规则对象

// Before
$validator = Validator::make($request->all(), [
    'recaptcha' => 'recaptcha',
]);

// After
$validator = Validator::make($request->all(), [
    'recaptcha' => [new Origami\Captcha\Rules\Recaptcha],
]);

已将 ValidatesCaptcha 特质的 validateReCaptcha 方法重命名为 validateRecaptcha

作者

许可证

MIT 许可证