lostlink/laravel-recaptchav3

为Laravel的Recaptcha V3包

dev-main 2023-01-19 18:55 UTC

This package is auto-updated.

Last update: 2024-09-19 22:39:26 UTC


README

Build Status Total Downloads Latest Stable Version License

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

安装

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

composer require lostlink/laravel-recaptchav3

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

RECAPTCHAV3_SITEKEY=sitekey
RECAPTCHAV3_SECRET=secret

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

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

用法

初始化Recaptcha Javascript

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

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

表单

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

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

验证

recaptchav3验证器添加到规则数组中。该规则接受两个参数:操作名称和所需的最小分数(默认为0.5)。

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

获取分数

或者,您可以获取分数并采取变量操作

// Import the facade class
use Lostlink\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);