reCAPTCHA

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

reCAPTCHA Dokumentation

Pour empêcher les robots trolls de faire des entrées sur une page Web, les soi-disant captchas existent depuis longtemps pour distinguer les robots des humains. Pour ce faire, les lettres ou les chiffres d’un champ de texte doivent généralement être reconnus, ce qui est plus qu’ennuyeux pour l’utilisateur. 

reCAPTCHA L’idée était d’utiliser le temps et l’énergie que les utilisateurs y consacrent pour des choses significatives. Depuis, l’entreprise a été rachetée par Google et l’orientation a quelque peu changé : il est largement reconnu automatiquement si une personne appuie vraiment sur la page Web ou non et ce n’est que dans des cas exceptionnels qu’il faut résoudre des tâches lors de la saisie, comme la reconnaissance des panneaux de signalisation. J’ai maintenant essayé l’installation du service.

Deutsch English Espagnol Portuguese

Le documentaire est un peu clairsemé, mais au fond c’est simple. Je l’ai d’abord intégré dans un site de test interne et dès que j’en ai besoin, je peux facilement l’activer. Pour vous aider, il existe également un package NuGET prêt à l’emploi pour ASP.NET Core que vous pouvez utiliser. En fait, c’est trivial, mais quand même utile de voir comment c’est fait :

La configuration se fait dans une section séparée, de sorte que vous n’avez pas à insérer manuellement la sitekey partout. Pour rendre les options disponibles dans une page Razor, appelez la configuration au démarrage :

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

Et dans la page :

@inject IOptions<RecaptchaSettings> RecaptchaSettings

Ensuite, vous pouvez insérer le captcha comme ceci :

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

Vous pouvez ensuite simplement référencer la sitekey avec @RecaptchaSettings.Value.SiteKey. Et dans la page Razor, vous pouvez utiliser l’injection de dépendances pour vous donner l’interface IRecaptchaService, qui fournit la fonction Validate. Celle-ci est appelée pour valider l’appel.

Cela ressemble à ceci :

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