Today we’re going to learn how we can validate a form, including a reCAPTCHA to prevent spam attacks by BOTS.

The first thing we need to do is register our reCAPTCHA code on Google: https://www.google.com/recaptcha/about/
And click on v3 Admin Console

Click on the plus (+) button to create a new one, and in this case, we’ll choose V2 invisible:

Google has a technique to verify invisible captcha using mouse movements.
We add the domains where the reCAPTCHA will work.
Once registered, copy the key and paste it into a file named GoogleUtils.tsx
export const GoogleReCaptchaSiteKey = "fsadfasdcdsafretrefrewf"
*Put your key.
Now install the library we’ll use to generate this reCAPTCHA, react-google-recaptcha
npm install --save react-google-recaptcha
And if we’re using TypeScript, add
npm i --save-dev @types/react-google-recaptcha
Now create a component named Captcha.tsx
import React from 'react';
import ReCAPTCHA from "react-google-recaptcha";
import { GoogleReCaptchaSiteKey } from '@/util/BaseURL';
interface Props {
captchaRef: any;
onChange?: (token: string null) => void;
}
function Captcha({ captchaRef, onChange }: Props) {
return (
<ReCAPTCHA
sitekey={GoogleReCaptchaSiteKey}
size="invisible"
ref={captchaRef}
onChange={onChange}
/>
);
}
export default Captcha;
And call it like this:
- Create the necessary methods to execute:
const captchaRef = useRef<any>(null);
const [tokenCaptcha, setTokenCaptcha] = useState<string null>(null);
//To login
useEffect(() => {
alert('TOKEN Captcha: ' + tokenCaptcha);
//login();
}, [tokenCaptcha])
function checkCaptcha() {
captchaRef.current.execute();
}
- Add the captcha to the form:
<CaptchaRecaptcha captchaRef={captchaRef} onChange={(token) => { setTokenCaptcha(token) }} />
And in the button, add the checkCaptcha function instead of submitting the form:
<pre class=”EnlighterJSRAW” data-enlighter-language=”generic” data-enlighter-theme=”” data-enlighter-highlight=”” data-enlighter-linenumbers=”” data-enlighter-lineoffset=”” data-enlighter-title=”” data
