Bonjour , j'essaye d'intégrer un captcha sur ma page de login. Après avoir cherché différentes causes , je ne comprend pas pourquoi le captcha n'est pris en compte car que je clique ou pas cela ne change rien je peux valider mon login.

Est ce que cela est du au FormLogin inclus dans Symfony 4 ?

Merci de votre aide !


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
 /**
     * @Route("/connexion", name ="security_login")
     * @param AuthenticationUtils $utils
     * @return Response
     */
    public function login(AuthenticationUtils $utils)
    {
        if (isset($_POST['submitpost'])) {
            if (isset($_POST ['g-recaptcha-response'])) {
                    $secret = 'XXXXXXXXXXX';
                    $recaptcha = new \ReCaptcha\ReCaptcha($secret);
                    $resp = $recaptcha->setExpectedHostname(' recaptcha-demo.appspot.com ')
                        ->verify($_POST['g-recaptcha-response']);
                    if ($resp->isSuccess()) {
                        echo 'captcha ok ';
                    } else {
                        $errors = $resp->getErrorCodes();
                        echo 'captcha non ok ';
                        var_dump($errors);
                    }
                }else{
                var_dump('Captcha non rempli');
            }
        }
 
        $error = $utils->getLastAuthenticationError();
        $username = $utils->getLastUsername();
 
        return $this->render('security/login.html.twig', [
 
            'hasError' => $error !== null,
 
                 'username' => $username,
        ]);
    }
Code twig : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
{% extends 'base.html.twig' %}
 
{% block body %}
    <head>
        <title>reCAPTCHA demo: Simple page</title>
        <script src="https://www.google.com/recaptcha/api.js" async defer></script>
    </head>
   <h1> Connexion à l'Axoblog</h1>
 
   <form action ="{{ path ('security_login') }}" method="post">
         <div class="form-group">
 
 
             {% if hasError %}
             <div class="alert alert-danger">Une erreur est survenue, merci de vérifier vos identifiants.</div>
             {% endif %}
 
            <input type="text" placeholder="Adresse email" required value="{{ username }}" name="_username" id="email"
                   class="form-control" >
         </div>
 
         <div class="form-group">
            <input placeholder="Mot de passe " required name ="_password"
                   type ="password" class="form-control">
         </div>
       <div class="g-recaptcha" data-sitekey="XXXXXXXXXX"></div>
         <div class="form-group">
             <button type="submit" name="submitpost" class="btn btn-success" style="background:#333645">Connexion</button>
         </div>
   </form>
{% endblock %}