Encore un nouveau venu dans SLExtensions. Voici un contrôle de captcha qui se branche sur le service gratuit www.recaptcha.net.
Le principe
- 1 L’utilisateur télécharge l’application silverlight qui contient le contrôle de captcha.
- 2 Le contrôle de captcha récupère une image plus une clé de cryptage du serveur d’image de www.recaptcha.net.
- 3 Le contrôle de captcha renvoie au serveur web (par POST, Get, Webservice, comme vous voulez), la clé de cryptage optenue auprès de www.recaptcha.net ainsi que les mots saisis par l’utilisateur.
- 4 Le serveur web fait un appel au serveur www.recaptcha.net en passant les données venues de l’utilisateur (mots + clé) plus une clé privée. Le serveur reCaptcha valide ou non le captcha. Le serveur fait ensuite (ou non) son traitement.
- 5 Retour vers l’utilisateur pour l’informer du résultat.
Le contrôle
<UserControl x:Class="SLExtensions.Showcase.PageRecaptcha"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:slec="clr-namespace:SLExtensions.Controls;assembly=SLExtensions.Controls"
Width="400" Height="300">
<StackPanel x:Name="LayoutRoot" Background="White">
<slec:ReCaptcha x:Name="captcha" PublicKey="6LesLAMAAAAAACjPBtyjD80bwTowvEQrslT8bJvT" HorizontalAlignment="Center" VerticalAlignment="Center" >
<slec:ReCaptcha.Verifier>
<slec:ReCaptchaHttpPostVerifier Url="/VerifyCaptcha.aspx" Success="ReCaptchaHttpPostVerifier_Success" Failed="ReCaptchaHttpPostVerifier_Failed"/>
</slec:ReCaptcha.Verifier>
</slec:ReCaptcha>
</StackPanel>
</UserControl>
Pour utiliser le contrôle, vous devez fournir un objet qui implémente l’interface IReCaptchaVerifier. C’est lui qui va se charger de faire l’appel au webservice vers votre serveur. Dans SLExtensions, j’ai ajouté une classe d’exemple qui fait un POST http des informations ainsi que la page aspx qui valide les informations auprès de recaptcha.