- Ingresamos a Recaptcha de Google V3 y generamos un nuevo sitio con recaptcha V3
- En Dominios ingresamos 127.0.0.1 para el desarrollo de localhost y el sitio web que vamos a proteger, ejemplo empleados.com sin el https
- Aca nos genera 2 claves recaptcha una para el front-end y la otra para el back-end
- La del front-end es Clave del sitio web
- La del back-end es Clave secreta
Como ejemplo en el formulario de login.html debemos hacer lo siguiente:
Debemos agregar esta clase g-recaptcha y la clave del sitio web que genera recaptcha acá: data-sitekey="6Lfrey0fAAA**************" data-callback='onSubmit' data-action='submit'
<button type="submit" class="btn btn-primary btn-md btn-block waves-effect text-center m-b-20 g-recaptcha" data-sitekey="6Lfrey0fAAAA*****************" data-callback='onSubmit' data-action='submit'>
Ingresar
</button>
Lo dejamos tal cual, hay que tener en cuenta dos cosas:
- Donde dice token lo dejamos así
- En el form-login es el id del form, en caso de no tenerlo le colocamos uno.
<script>
function onSubmit(token) {
document.getElementById("form-login").submit();
}
</script>
En la sección que valodamos el login, antes de ello colocamos lo siguiente:
- En esta sección usamos la segunda clave que es la llamada clave secreta del google recaptcha, y en este ejemplo lo colocamos en cap_secret
#***** Pasamos por el recaptcha de Google
captcha_token = request.POST.get("g-recaptcha-response")
cap_url = "https://www.google.com/recaptcha/api/siteverify"
cap_secret = "6Lfrey0fAAAAABEp***************"
cap_data = {"secret": cap_secret, "response": captcha_token}
cap_server_response = requests.post(url=cap_url, data=cap_data)
# print(cap_server_response.text)
cap_json = json.loads(cap_server_response.text)
# print(cap_json["score"])
# ******Validamos el recaptcha de Google
if cap_json["success"] == False or cap_json["score"] < 0.85:
messages.error(request, '!Invalid form')
return redirect('login')
else:
# Aca continuamos con nuestro código pues ya pasó la validación de recaptcha