josiasmontag/laravel-recaptchav3

Laravel 包的 Recaptcha V3

1.0.3 2024-03-04 08:33 UTC

This package is auto-updated.

Last update: 2024-09-04 09:26:19 UTC


README

Build Status Total Downloads Latest Stable Version License

这是一个为 Laravel 开发的 Google Recaptcha V3 的包。这是一个轻量级的包,专注于 Recaptcha V3 验证的后端验证。

安装

要开始使用,请使用 Composer 将包添加到项目的依赖项中

composer require josiasmontag/laravel-recaptchav3

RECAPTCHAV3_SITEKEYRECAPTCHAV3_SECRET 添加到您的 .env 文件中。(您可以在 这里 获取它们)

RECAPTCHAV3_SITEKEY=sitekey
RECAPTCHAV3_SECRET=secret

可选地,您可以发布配置文件

php artisan vendor:publish --provider="Lunaweb\RecaptchaV3\Providers\RecaptchaV3ServiceProvider"

用法

初始化 Recaptcha Javascript

Recaptcha v3 在加载到每个页面上以获取最大交互上下文时表现最佳。因此,将其添加到您的页眉或页脚模板中

{!! RecaptchaV3::initJs() !!}

表单

RecaptchaV3::field($action, $name='g-recaptcha-response') 创建一个不可见的输入字段,在加载时填充 Recaptcha 令牌。

<form method="post" action="/register">
    {!! RecaptchaV3::field('register') !!}
    <input type="submit" value="Register"></input>
</form>

验证

recaptchav3 验证器添加到规则数组。规则接受两个参数:动作名称和最低要求的 score(默认为 0.5)。

$validate = Validator::make(Input::all(), [
	'g-recaptcha-response' => 'required|recaptchav3:register,0.5'
]);

获取分数

或者,您可以获取分数并采取相应的行动

// Import the facade class
use Lunaweb\RecaptchaV3\Facades\RecaptchaV3;
//  RecaptchaV3::verify($token, $action)
$score = RecaptchaV3::verify($request->get('g-recaptcha-response'), 'register')
if($score > 0.7) {
    // go
} elseif($score > 0.3) {
    // require additional email verification
} else {
    return abort(400, 'You are most likely a bot');
}

自定义验证错误消息

将以下值添加到 validation 语言文件中的 custom 数组中

'custom' => [
    'g-recaptcha-response' => [
        'recaptchav3' => 'Captcha error message',
    ],
],

隐藏 ReCAPTCHA 徽章

将其添加到您的 CSS 文件中

.grecaptcha-badge { visibility: hidden !important; }

本地化

默认情况下,该包遵循默认的应用程序区域设置,该区域设置在 config/app.php 中定义。如果您想更改此行为,可以通过添加一个新的环境变量来指定要使用的区域设置。

RECAPTCHAV3_LOCALE=ar

测试

为了使表单可测试,您可以模拟 RecaptchaV3 门面。

RecaptchaV3::shouldReceive('verify')
    ->once()
    ->andReturn(1.0);