Bonjour,

Je suis en train de tester le fonctionnement de security et je rencontre un problème :malgré l'encodage du nom d'utilisateur et le mot de passe que je pense avoir correctement configurés, j'ai toujours le message d'erreur suivant :

Identifiants invalides.
Voici ma configuration dans secutity.yaml :

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
36
37
38
 
security:
    # https://symfony.com/doc/current/security.html#where-do-users-come-from-user-providers
    providers:
        from_database:
            entity: 
                class: 'App\Entity\User'
                property: 'username'
 
    firewalls:
        dev:
            pattern: ^/(_(profiler|wdt)|css|images|js)/
            security: false
        main:
            anonymous: true
            logout:
                path: /logout
                target: /
 
            # activate different ways to authenticate
 
            # http_basic: true
            # https://symfony.com/doc/current/security.html#a-configuring-how-your-users-will-authenticate
 
            form_login: 
                check_path: login
            # https://symfony.com/doc/current/security/form_login_setup.html
 
    # Easy way to control access for large sections of your site
    # Note: Only the *first* access control that matches will be used
    access_control:
        - { path: ^/admin, roles: ROLE_ADMIN }
        # - { path: ^/profile, roles: ROLE_USER }
 
    encoders:
        App\Entity\User:
            algorithm: bcrypt
            cost: 12
Mon SecurityController.php :

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
 
<?php
 
namespace App\Controller;
 
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\Security\Http\Authentication\AuthenticationUtils;
 
class SecurityController extends AbstractController
{
 
    /**
     * @Route("/login", name="login")
     */
    public function login(AuthenticationUtils $authenticationUtils)
    {
 
        $error = $authenticationUtils->getLastAuthenticationError();
        $lastUsername = $authenticationUtils->getLastUsername();
 
        return $this->render('security/login.html.twig', ['last_username' => $lastUsername, 
                                                          'error' => $error,
                                                         ]
                            )
        ;
 
    }
 
}
Et mon template :

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
36
37
38
39
40
41
42
 
{% extends 'base.html.twig' %}
 
{% block title 'Se connecter' %}
 
{% block body %}
 
    <div class="container mt-4"> 
 
        {% if error %}
 
            <div class="alert alert-danger">
 
                    {{ error.messageKey | trans(error.messageData, 'security') }}
 
            </div>
 
        {% endif %}
 
        <form action="{{ path('login') }}" method="post">
 
            <div class="form-group">
 
                <label for="username">Nom d'utilisateur</label>
                <input type="text" id="username" name="_username" class="form-control" value="{{ last_username }}">
 
            </div>
 
            <div class="form-group">
 
                <label for="password">Mot de passe</label>
                <input type="password" id="password" name="_password" class="form-control">
 
            </div>
 
            <button type="submit" class="btn btn-primary">Se connecter</button>
 
        </form>
 
    </div>
 
{% endblock %}
Pour créer un utilisateur, j'ai écrit cette fixture que j'ai ensuite exécutée :

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
36
 
<?php
 
namespace App\DataFixtures;
 
use App\Entity\User;
use Doctrine\Bundle\FixturesBundle\Fixture;
use Doctrine\Common\Persistence\ObjectManager;
use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface;
 
class UserFixtures extends Fixture
{
 
    /**
     * @var UserPasswordEncoderInterface
     */
    private $encoder;
 
    public function __construct(UserPasswordEncoderInterface $encoder)
    {
 
        $this->encoder = $encoder;
 
    }
 
    public function load(ObjectManager $manager)
    {
        $user = new User();
 
        $user->setUsername('demo');
        $user->setPassword($this->encoder->encodePassword($user, 'demo'));
 
        $manager->persist($user);
        $manager->flush();
    }
}
Dans ma table user, je trouve bien cet enregistrement :

Nom : Capture.JPG
Affichages : 735
Taille : 15,7 Ko

Je ne comprends pas d'où provient l'erreur. Quelqu'un aurait une piste?

Merci d'avance pour votre aide.