Bonsoir,

pour un projet scolaire je doit gérer la connexion sur un site type e-commerce.
L'inscription est mise en place avec encodage des mots de passe.
Lors de la connexion, même si je rentre des identifiants correctes, Symfony me renvoie sur la page de connexion en m'indiquant que les identifiants sont incorrectes.
En fouillant un peu, je m'apperçois que c'est la vérification du mot de passe dans le LoginFormAuthenticator.php qui retourne false.
L'utilisateur est bien retrouvé dans la passe mais le dump() dans fonction 'checkCredentials()' me montre que isPasswordValid() retourne false.

LoginFormAuthneticator:
Code php : 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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
 
<?php
 
namespace App\Security;
 
use App\Entity\Utilisateur;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface;
use Symfony\Component\Security\Core\Exception\CustomUserMessageAuthenticationException;
use Symfony\Component\Security\Core\Exception\InvalidCsrfTokenException;
use Symfony\Component\Security\Core\Security;
use Symfony\Component\Security\Core\User\UserInterface;
use Symfony\Component\Security\Core\User\UserProviderInterface;
use Symfony\Component\Security\Csrf\CsrfToken;
use Symfony\Component\Security\Csrf\CsrfTokenManagerInterface;
use Symfony\Component\Security\Guard\Authenticator\AbstractFormLoginAuthenticator;
use Symfony\Component\Security\Http\Util\TargetPathTrait;
 
class LoginFormAuthenticator extends AbstractFormLoginAuthenticator
{
    use TargetPathTrait;
 
    private $entityManager;
    private $urlGenerator;
    private $csrfTokenManager;
    private $passwordEncoder;
 
    public function __construct(EntityManagerInterface $entityManager, UrlGeneratorInterface $urlGenerator, CsrfTokenManagerInterface $csrfTokenManager, UserPasswordEncoderInterface $passwordEncoder)
    {
        $this->entityManager = $entityManager;
        $this->urlGenerator = $urlGenerator;
        $this->csrfTokenManager = $csrfTokenManager;
        $this->passwordEncoder = $passwordEncoder;
    }
 
    public function supports(Request $request)
    {
        return 'mi22_utilisateur_connexion' === $request->attributes->get('_route')
            && $request->isMethod('POST');
    }
 
    public function getCredentials(Request $request)
    {
        $credentials = [
            'email' => $request->request->get('email'),
            'password' => $request->request->get('password'),
            'csrf_token' => $request->request->get('_csrf_token'),
        ];
        $request->getSession()->set(
            Security::LAST_USERNAME,
            $credentials['email']
        );
 
        return $credentials;
    }
 
    public function getUser($credentials, UserProviderInterface $userProvider)
    {
        $token = new CsrfToken('authenticate', $credentials['csrf_token']);
        if (!$this->csrfTokenManager->isTokenValid($token)) {
            throw new InvalidCsrfTokenException();
        }
 
        $user = $this->entityManager->getRepository(Utilisateur::class)->findOneBy(['email' => $credentials['email']]);
 
        if (!$user) {
            // fail authentication with a custom error
            throw new CustomUserMessageAuthenticationException('Email could not be found.');
        }
 
        return $user;
    }
 
    public function checkCredentials($credentials, UserInterface $user)
    {
        dump($this->passwordEncoder->isPasswordValid($user, $credentials['password']), $user, $credentials['password']);exit; // 'false' , l'objet user, le mdp saisis
        return $this->passwordEncoder->isPasswordValid($user, $credentials['password']);
    }
 
    public function onAuthenticationSuccess(Request $request, TokenInterface $token, $providerKey)
    {
        if ($targetPath = $this->getTargetPath($request->getSession(), $providerKey)) {
            return new RedirectResponse($targetPath);
        }
 
        // For example : return new RedirectResponse($this->urlGenerator->generate('some_route'));
        throw new \Exception('TODO: provide a valid redirect inside '.__FILE__);
    }
 
    protected function getLoginUrl()
    {
        return $this->urlGenerator->generate('mi22_utilisateur_connexion');
    }
}

Je commence à perdre patiente et je n'ai aucune piste de pourquoi la vérification du mot de passe bloque mon traitement. Je certifie à 100% que les identifiants que je rentre sont correctes, j'en ai recrée 5 pour être sûr.

Merci d'avance!