Tích hợp Google reCaptcha cho Laravel 5/6/7/8/9. Google reCaptcha cho Laravel công cụ chống Spam hiệu quả cho dự án của bạn. Google reCaptcha hoàn toàn miễn phí và thân thiện với người dùng, đặc biệt gần đây Google đã cho bạn tự điều chỉnh độ khó của reCaptcha.
Cài đặt Google reCaptcha cho Laravel
Có nhiều cách để sử dụng reCaptcha trong Laravel, mình thấy nhanh – hiệu quả – dễ sử dụng nhất là package /no-captcha. Chạy câu lệnh Composer này để cài đặt
composer require anhskohbo/no-captcha
Cấu hình
Trước tiên bạn cần tạo reCaptcha để lấy Secret key, Site key sao đó điền vào tệp .env. Thế là cấu hình xong
NOCAPTCHA_SECRET=secret-key NOCAPTCHA_SITEKEY=site-key
Sử dụng reCaptcha cho Laravel
Sao khi cài đặt và cấu hình package reCaptcha cho Laravel xong, 2 bước tiếp theo là cấu hình giao diện và validation
Giao diện
Thêm JS
Thêm JS vào trang mà bạn muốn hiện thị reCaptcha, thông thường là ở cuối trang
Mặc định
{!! NoCaptcha::renderJs() !!}
Hoặc bạn có thể cấu hình ngôn ngữ và onloadCallback
{!! NoCaptcha::renderJs('fr', true, 'recaptchaCallback') !!}
Hiển thị reCAPTCHA
Thêm vào nơi vào bạn muốn reCaptcha hiện thị, thông thường là cuối form và trước nút submit
Mặc định
{!! NoCaptcha::display() !!}
Hoặc cấu hình tùy chỉnh
{!! NoCaptcha::display(['data-theme' => 'dark']) !!}
Đối với Invisible reCAPTCHA sẽ sử dụng kèm submit button:
{!! NoCaptcha::displaySubmit('my-form-id', 'submit now!', ['data-theme' => 'dark']) !!}
Validation
Sao khi cho cái reCaptcha nó hiện ra rồi, bước tiếp theo là cần validate xem người dùng đã vượt qua captcha chưa.
reCapchat sẽ được xem như một giá trị trong form và có name là g-recaptcha-response. Ta cần validate required|captcha để chắc chắc người dùng có nhập và nhập chính xác.
$validate = Validator::make(Input::all(), [ 'g-recaptcha-response' => 'required|captcha' ]); // hoặc $request->validate([ 'g-recaptcha-response' => 'required|captcha' ]);
Cài đặt reCaptcha cho Laravel vậy là xong. Bạn có thể tham khảo chi tiết tại anhskohbo/no-captcha.
Bạn có bài viết tích hợp đang nhập của Google không ạ?
để mình tranh thủ viết