Recaptcha

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

reCAPTCHA Dokumentation

Para evitar que los robots de arrastre realicen entradas en una página web, ha habido durante mucho tiempo las llamadas captchas para distinguir a los robots de los humanos. Para ello, las letras o números suelen tener que ser reconocidos en un cuadro de texto - para el usuario esto es más que molesto.

reCAPTCHAs La idea era usar el tiempo y la energía que los usuarios usan para cosas significativas. La empresa ha sido tomada por Google y el enfoque se ha cambiado un poco: Se reconoce en gran medida automáticamente si una persona realmente presiona la página web o no y sólo en casos excepcionales todavía las tareas tienen que ser resueltos durante la entrada, como el Detectar señales de tráfico. Ahora he probado la instalación del servicio.

Deutsch English Français Portuguese

El documental es un poco escaso, pero básicamente es simple. Primero instalé esto con una página de prueba interna y tan pronto como lo necesito, puedo activarlo fácilmente. Para ayudar, también hay un paquete NuGET ya hecho para ASP.NET núcleo que puede usar. En realidad trivial, pero todavía útil para ver cómo se hace:

La configuración se realiza en una sección independiente, de modo que no inserte la clave de sitio manualmente en todas partes. Para que las opciones estén disponibles en una página de Razor, Startup llama a la configuración:

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

Y en la página:

@inject IOptions<RecaptchaSettings> RecaptchaSettings

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

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

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

Esto se ve 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();
}
}