reCAPTCHA

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

reCAPTCHA Dokumentation

Afin d’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, il est généralement nécessaire de reconnaître des lettres ou des chiffres dans un champ de texte - pour l’utilisateur, c’est plus qu’ennuyeux. 

Les reCAPTCHA L’idée était d’utiliser le temps et l’énergie que les utilisateurs consacrent à cela pour des choses significatives. Entre-temps, l’entreprise a été rachetée par Google et l’objectif a été quelque peu modifié : il est en grande partie automatiquement reconnu si une personne clique réellement sur la page Web ou non, et ce n’est que dans des cas exceptionnels que des tâches doivent être résolues lors de la saisie, comme la reconnaissance des panneaux de signalisation. J’ai maintenant essayé l’installation du service une fois.

Deutsch English Espagnol Portuguese

Le documentaire est un peu clairsemé, mais fondamentalement c’est simple. J’ai d’abord intégré cela dans une page 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 c’est 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 la clé de site manuellement partout. Pour que les options soient disponibles dans une page Razor, vous pouvez appeler 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 utiliser @RecaptchaSettings.Value.SiteKey pour référencer la clé de site. Et dans la page Razor, vous pouvez utiliser l’injection de dépendances pour obtenir l’interface IRecaptchaService, qui fournit la fonction Valider. Ceux-ci sont appelés pour valider l’appel.

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