origami / captcha
为 Laravel 项目提供简单的 Google Recaptcha 集成
3.0.0
2024-05-28 10:56 UTC
Requires
- php: ^8.1
- google/recaptcha: ^1.2
- illuminate/support: ^10.0|^11.0
- illuminate/validation: ^10.0|^11.0
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。
设置
-
在 https://www.google.com/recaptcha/admin 注册 Google Recaptcha 账户
-
您应该在
config/services.php文件中添加一个 recatpcha 部分
'recaptcha' => [
'key' => env('RECAPTCHA_KEY'),
'secret' => env('RECAPTCHA_SECRET'),
],
- 使用密钥和密钥更新您的
.env文件
RECAPTCHA_KEY=
RECAPTCHA_SECRET=
- 在您的验证文件(例如
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