[Học Laravel] Hướng dẫn tích hợp Google reCAPTCHA trong Laravel
![[Học Laravel] Hướng dẫn tích hợp Google reCAPTCHA trong Laravel](https://webnulled.net/wp-content/uploads/2022/02/laravel-huong-dan-tich-hop-google-recaptcha-trong-laravel_6202b0078bd62.png)
Google reCaptcha là một dịch vụ của Google tích hợp được vào bất kỳ chỗ nào muốn xác định xem hành động nào đó là do con người hay máy tính tạo ra. Khi bạn lướt web, chắc chắn bạn đã từng gặp những ô captcha với chữ loằng ngoằng. Các cải tiến mới đây, các thuật toán mới giúp cho Google xác định được hành vi do con người hay máy tính một cách chính xác mà không cần đến những ký tự loằng ngoằng như trước. Trong bài viết này WebFree.Net sẽ hướng dẫn các bạn tích hợp Google reCAPTCHA vào website của bạn bằng Laravel.
Table of Contents
1. Đăng ký Google reCAPTCHA
Trước tiên, bạn cần có một tài khoản Google để tạo Google reCAPTCHA cho website, vào trang đăng ký click vào Get reCAPTCHA. Điền thông tin vào form đăng ký.
Như vậy bạn đã tạo ra một reCAPTCHA để sử dụng cho website. Chúng ta sẽ thấy Site key và Secret key được sử dụng để tích hợp reCAPTCHA.
2. Thiết lập cấu hình, tạo class xử lý reCAPTCHA
Hai khóa được tạo ra trong bước đăng ký reCAPTCHA sẽ được đưa vào ứng dụng Laravel thông qua .env hoặc config/app.php
GOOGLE_RECAPTCHA_KEY=6Leil3AUAAAAABdYLqrP_Io7NluMnMcqQrz6vGR1
GOOGLE_RECAPTCHA_SECRET=6Leil3AUAAAAAJafuG7aCdwlppsNeSxqWSDJhHdC
Các key ở trên chỉ là demo, bạn nên tạo key riêng cho reCAPTCHA của bạn.Form đăng ký có email chúng ta có thể dùng xác thực qua email đảm bảo hơn, tuy nhiên có nhiều website muốn người dùng đăng ký nhanh không cần qua bước xác thực email lằng nhằng mà chỉ cần xác định đúng là người không phải máy thôi. Chúng ta tạo view cho trang đăng ký (resource/views/auth/register.blade.php):
Chỉnh sửa (resource/views/layouts/app.blade.php)
{{ config('app.name', 'Laravel') }}
@yield('content')
OK. giờ vào localhost:8000/register, ta được:
Nó đã hiện lên rất ok, tiếp theo chúng ta sẽ xử lý phần post dữ liệu form đăng nhập. Chúng ta sẽ tạo thêm một phương thức Laravel Validate để kiểm tra kết quả Google reCAPTCHA trả về, nếu là máy chúng ta sẽ thông báo lên “Form đăng ký không dành cho robot”. Tạo thư mục Validators trong thư mục app và tạo một file ReCaptcha.php với nội dung:
post(
'https://www.google.com/recaptcha/api/siteverify',
['form_params'=>
[
'secret'=>env('GOOGLE_RECAPTCHA_SECRET'),
'response'=>$value
]
]
);
$body = json_decode((string)$response->getBody());
return $body->success;
}
}
Trong class ReCaptcha chúng ta có sử dụng class Client trong gói guzzlehttp/guzzle, thực hiện cài đặt gói này vào project, chạy composer:
composer require guzzlehttp/guzzle
Tiếp theo chúng ta đăng ký validator vừa tạo vào hệ thống để sử dụng, thêm vào phương thức boot() của appProvidersAppServiceProvider.php:
public function boot()
{
Validator::extend('recaptcha', '[email protected]');
}
Sau đó thêm message lỗi khi kiểm tra reCAPTCHA vào file resources/lang/en/validation.php
'recaptcha'=>'Form đăng ký không dành cho robot'
Trong phương thức validator() của RegisterController (appHttpControllersAuthRegisterController.php) thêm kiểm tra kết quả Google reCAPTCHA:
/**
* Get a validator for an incoming registration request.
*
* @param array $data
* @return IlluminateContractsValidationValidator
*/
protected function validator(array $data)
{
return Validator::make($data, [
'name' => 'required|max:255',
'email' => 'required|email|max:255|unique:users',
'password' => 'required|min:6|confirmed',
'g-recaptcha-response'=>'required|recaptcha',
]);
}
3. Kết luận
Vậy là WebFree.Net đã hướng dẫn tích hợp xong Google reCAPTCHA vào form đăng ký trong Laravel. Hy vọng với hướng dẫn này sẽ giúp các bạn vận dụng vào dự án của mình. Chúc bạn thành công!.
4. Xem thêm
-
Hướng dẫn sử dụng Cache trong Laravel giúp tăng tốc cho Website của bạn
-
Hướng dẫn làm chức năng phân trang kết hợp với Ajax trong Laravel
-
Tạo mã QR code – hướng dẫn cách tạo mã QR code trong Laravel
Theo:
viblo.asia