reCAPTCHA

29.06.2018 von robert@riwa4.de
/blog/artikel/recaptcha

reCAPTCHA Dokumentation

Con el fin de evitar que los robots trolling hagan entradas en una página web, los llamados captchas existen desde hace mucho tiempo para distinguir a los robots de los humanos. Para hacer esto, generalmente es necesario reconocer letras o números en un campo de texto, para el usuario esto es más que molesto. 

reCAPTCHA La idea era utilizar el tiempo y la energía que los usuarios gastan en esto para cosas significativas. Mientras tanto, la empresa ha sido adquirida por Google y el enfoque ha cambiado un poco: se reconoce en gran medida de forma automática si una persona está realmente haciendo clic en la página web o no, y solo en casos excepcionales hay que resolver tareas al escribir, como reconocer señales de tráfico. Ahora he probado la instalación del servicio una vez.

Deutsch English Français Portuguese

El documental es un poco escaso, pero básicamente es simple. Inicialmente construí esto en una página de prueba interna y tan pronto como lo necesito, puedo habilitarlo fácilmente. Para ayudar, también hay un paquete NuGET listo para usar para ASP.NET Core que puede usar. En realidad es trivial, pero sigue siendo útil ver cómo se hace:

La configuración se realiza en una sección separada, para que no tenga que insertar la clave del sitio manualmente en todas partes. Para que las opciones estén disponibles en una página de Razor, puede llamar a la configuración en Inicio:

services.Configure<RecaptchaSettings>(Configuration.GetSection("RecaptchaSettings"));
services.AddTransient<IRecaptchaService, RecaptchaService>();

Y en la página:

@inject IOptions<RecaptchaSettings> RecaptchaSettings

A continuación, puedes insertar el captcha de la siguiente manera:

<div class="g-recaptcha" data-sitekey="@RecaptchaSettings.Value.SiteKey"></div>

A continuación, puede usar simplemente @RecaptchaSettings.Value.SiteKey para hacer referencia a la clave de sitio. Y en la página Razor, puede usar la inserción de dependencias para obtener la interfaz IRecaptchaService, que proporciona la función Validate. Se llama a ellos para validar la llamada.

Se verá así:

        public async Task<IActionResult> OnPostAsync()
{
bool captchaValid = await _recaptcha.Validate(Request);
if (!captchaValid)
{
ModelState.AddModelError("reCaptcha", "Bitte das reCaptcha bestätigen.");
}
if (ModelState.IsValid)
{
return Page();
}
else
{
ViewData["Message"] = "Schiefgegangen";
return Page();
}
}