IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

Security : authentification impossible [4.x]


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mai 2004
    Messages
    803
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 803
    Par défaut Security : authentification impossible
    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.

  2. #2
    Membre extrêmement actif
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Par défaut
    je crois bien qu'il faut ajouter le provider dans form_login


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ...
    provider: from_database 
    ...

  3. #3
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mai 2004
    Messages
    803
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 803
    Par défaut
    Merci beaucoup pour ton aide. Cependant, même en modifiant mon security.yaml de cette manière

    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
     
    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
                    provider: from_database 
                # 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
    ça me donne toujours le même message...

  4. #4
    Membre extrêmement actif
    Avatar de dukoid
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2012
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 2 100
    Par défaut
    la password ne semble pas correct.
    il faut que le varchar de la colonne password ai au moins 255 caractères sinon il enregistre la moitié et ça ne fonctionne pas

  5. #5
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mai 2004
    Messages
    803
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 803
    Par défaut
    Ok, nickel, un tout grand merci!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Jboss 4.2.3: Authentification Impossible
    Par rhani-sama dans le forum Wildfly/JBoss
    Réponses: 3
    Dernier message: 27/05/2009, 16h38
  2. CUPS : Authentification impossible
    Par libuma dans le forum Réseau
    Réponses: 4
    Dernier message: 18/12/2008, 23h44
  3. Réponses: 1
    Dernier message: 24/11/2008, 11h29
  4. [Spring Security] Authentification par groupe LDAP
    Par titeuf92 dans le forum Spring Web
    Réponses: 2
    Dernier message: 25/06/2008, 10h28
  5. Réponses: 0
    Dernier message: 03/04/2008, 12h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo