joukhar/laravel-no-captcha-v3

Laravel no captcha v3 是一个轻量级包,可以将 Google reCAPTCHA v3 添加到 Laravel 应用程序中的敏感页面

1.0 2022-10-20 15:01 UTC

This package is auto-updated.

Last update: 2024-09-21 00:39:47 UTC


README

License Total Downloads Isues

安装

在 composer.json 中添加新的必需包

"joukhar/laravel-no-captcha-v3": "^1.0"

运行 composer updatephp composer.phar update

或直接通过 composer 安装

composer require joukhar/laravel-no-captcha-v3

要求

需要 php >= 7.4

配置

您可以覆盖包的默认选项。首先发布配置

php artisan vendor:publish --provider="Joukhar\LaravelNoCaptchaV3\LaravelNoCaptchaV3" --tag=laravel-no-captcha-v3-config

然后将以下键添加到 .env 文件中以打开/关闭 reCAPTCHA

ENABLE_NO_CAPTCHA=on
GOOGLE_RECAPTCHA_SITE_KEY=
GOOGLE_RECAPTCHA_SECRET_KEY=

并在配置文件中添加您的 reCAPTCHA 凭据

     'recaptcha' => [
        'site_key' => env('GOOGLE_RECAPTCHA_SITE_KEY'),
        'secret_key' => env('GOOGLE_RECAPTCHA_SECRET_KEY')
    ]

您可以在以下位置获取它们 https://www.google.com/u/1/recaptcha/admin/create

视图

如果您想覆盖默认视图,您可以通过以下方式发布它们

php artisan vendor:publish --provider="Joukhar\LaravelNoCaptchaV3\LaravelNoCaptchaV3" --tag=laravel-no-captcha-v3-views

使用方法

在路由文件(web.php)中

Route::post('submit-form', [TestController::class, 'handleFormSubmission']);

在 blade 文件中

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>

<body>

    <form action="{{ route('validate-form') }}" method="post">
        @csrf
        @include('NoCaptchaV3::recaptcha-input')

        <button type="submit">Submit Form</button>
    </form>


    {{--  --------------------------------------------------------------------  --}}
    {{-- Your Scripts                                                           --}}
    {{--  --------------------------------------------------------------------  --}}
    @include('NoCaptchaV3::recaptcha-script')

</body>

</html>

在关联之前 blade 文件的控制器中

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Joukhar\LaravelNoCaptchaV3\Http\Controllers\NoCaptchaV3Controller;

class TestController extends Controller
{
    public function handleFormSubmission(Request $request, NoCaptchaV3Controller $noCaptchaV3Controller)
    {
        $request->validate([
            'recaptcha' => 'required'
        ]);
        // if reCaptcha Validation has Failed, it will return 'Google reCaptcha Validation has Failed';
        // if reCaptcha score >= 0.5, it will return 'safe' otherwise it will return 'not safe' ;
        // if ENABLE_NO_CAPTCHA = off , it will return 'false' ;

        $recaptchaResult = $noCaptchaV3Controller->reCaptchaResponse();
    
        // conclusion
        if ($recaptchaResult == 'safe') {
            // your code
        }
    }
}

许可协议

MIT 许可协议 (MIT)。请参阅 许可文件 以获取更多信息。