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 :

Création d'un bundle d'authentification [2.x]


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur
    Avatar de Viduc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2009
    Messages
    1 445
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Février 2009
    Messages : 1 445
    Billets dans le blog
    2
    Par défaut Création d'un bundle d'authentification
    Bonjour,

    Dans l'optique de créer mon propre système d'authentification sur un AD (ldap), j'essaie de comprendre le mécanisme complet mis en œuvre sous symfony.

    J'essaie pour le moment de créer le mécanisme de bas d'authentification sans aller cherche dans une quelconque base ou autre, l'idée est que le système me renvoie l'autorisation.

    J'ai donc suivi de nombreux tuto/forum etc... Je me base maintenant essentiellement sur ça:

    http://symfony.com/doc/current/cookbook/security/custom_provider.html


    Mon projet est construit dans src/ADManager et j'ai un Bundle qui se nomme AuthenticationBundle
    Voici toutes mes class et fichiers divers:

    le Listener:
    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
    43
    44
    45
    46
    47
     
    namespace ADManager\AuthentificationBundle\Controller;
     
    use Symfony\Component\Security\Core\SecurityContextInterface;
    use Symfony\Component\Security\Core\Authentication\AuthenticationManagerInterface;
    use Symfony\Component\HttpKernel\Log\LoggerInterface;
    use Symfony\Component\HttpKernel\Event\GetResponseEvent;
    use Symfony\Component\Security\Core\Exception\AuthenticationCredentialsNotFoundException;
    use Symfony\Component\Security\Core\Exception\AccessDeniedException;
    use ADManager\AuthentificationBundle\Controller\UserToken;
    use AADManager\AuthentificationBundle\Controller\AuthenticationProvider;
     
    class AuthenticationListener implements ListenerInterface
        {
        private $context;
        private $authManager;
     
        public function __construct(SecurityContextInterface $context, AuthenticationManagerInterface $authManager)
            {
            $this->context = $context;
            $this->authManager = $authManager;
            }
     
        /**
         * Handles access authorization.
         *
         * @param GetResponseEvent $event A GetResponseEvent instance
         */
        public function handle(GetResponseEvent $event)
            {
            $token = $this->context->getToken();
            if (null === $token) 
                {throw new AuthenticationCredentialsNotFoundException('A Token was not found in the SecurityContext.');}
     
            //$request = $event->getRequest();
     
            if (!$token->isAuthenticated()) 
                {
                $token = $this->authManager->authenticate($token);
                return $this->context->setToken($token);
                }
            else
                {
                return $this->context->setToken($token);
                }
            }
        }
    le Provider:

    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
     
    namespace ADManager\AuthentificationBundle\Controller;
     
    use Symfony\Component\Security\Core\Exception\AccountStatusException;
    use Symfony\Component\Security\Core\Exception\AuthenticationException;
    use Symfony\Component\Security\Core\Exception\ProviderNotFoundException;
    use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
    use Symfony\Component\Security\Core\Authentication\Provider\AuthenticationProviderInterface;
    use ADManager\AuthentificationBundle\Controller\UserToken;
     
    class AuthenticationProvider implements AuthenticationProviderInterface
        {
        private $userProvider;
     
        public function __construct(UserProviderInterface $userProvider)
            {
            $this->userProvider = $userProvider;
            }
     
        public function authenticate(TokenInterface $token)
            {
            if(true)
                {
                $TokenAuthentifie = new UserToken("admin", "admin", "ADM", array('ROLE_ADMIN'));
                return $TokenAuthentifie;
                }
            throw new AuthenticationException('The WSSE authentication failed.');
     
            }
     
        public function supports(TokenInterface $token) 
            {return true;}
        }
    Ma class user
    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
     
     
    namespace ADM\AuthenticationBundle\Controller;
     
    use Symfony\Component\Security\Core\User\UserInterface;
     
    class User implements UserInterface
        {
        protected $username;
     
        protected $password;
     
        protected $roles;
     
        protected $groups;
     
        protected $salt;
     
        public function __construct($username, $password, $salt, array $roles)
            {
            $this->username = $username;
            $this->password = $password;
            $this->salt = $salt;
            $this->roles = $roles;
            //$this->groups = array();
            }
     
        public function equals(UserInterface $user) 
            {
            if (!$user instanceof WebserviceUser) {return false;}
     
            if ($this->password !== $user->getPassword()) {return false;}
     
            if ($this->getSalt() !== $user->getSalt()) {return false;}
     
            if ($this->username !== $user->getUsername()) {return false;}
     
            return true;
            }
     
        public function eraseCredentials() 
            {$this->password = null;}
     
        public function setPassword($password)
            {$this->password = $password;}
        public function getPassword() 
            {return $this->password;}
     
        public function setRoles($roles)
            {$this->roles = $roles;}
        public function getRoles() 
            {return $this->roles;}
     
        public function setSalt($salt)
            {$this->salt = $salt;}
        public function getSalt() 
            {return $this->salt;}
     
        public function setUsername($username)
            {$this->username = $username;}
        public function getUsername() 
            {return $this->username;}
        }
    mon user provider:
    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
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
     
     
    namespace ADM\AuthenticationBundle\Controller;
     
    use Symfony\Component\Security\Core\User\UserProviderInterface;
    use Symfony\Component\Security\Core\User\UserInterface;
    use Symfony\Component\Security\Core\Exception\UsernameNotFoundException;
    use Symfony\Component\Security\Core\Exception\UnsupportedUserException;
    use ADM\AuthenticationBundle\Controller\User;
     
    class UserProvider implements UserProviderInterface
        {
        private $UserPWD;
     
        /**
         * Le password de l'utilisateur doit être au préalable enregistré via la fonction setUserPWD($userpwd)
         * @param type $username
         * @return \AdLdap\UserBundle\Security\User
         * @throws UsernameNotFoundException
         */
        public function loadUserByUsername($username) 
            {
            // Instanciation du LDAP
            //$ldap = $this->container->get('adldap_adldap');
            //$Liste_Roles = array();
            //if($ldap->authenticate($username, $UserPWD, false))
            //    {
            //    $Liste_Roles_Group = $this->container->getParameter('roles_groupes');
            //    foreach($Liste_Roles_Group as $roles => $group)
            //        {   
            //        if($ldap->user->inGroup($username, $group, NULL, false))
            //            {$Liste_Roles[] = $roles;}
            //        }
            //    return new User($username, $UserPWD, '', $roles);
            //    }   
            //else
            //    {throw new UsernameNotFoundException(sprintf('l\'utilisateur "%s" n\'existe pas.', $username));}
     
            return new User("admin", "admin", '', 'ROLE_ADMIN');
            }
     
        public function refreshUser(UserInterface $user) 
            {
            if (!$user instanceof User) 
                {throw new UnsupportedUserException(sprintf('Instances of "%s" are not supported.', get_class($user)));}
     
            return $this->loadUserByUsername($user->getUsername());
            }
     
        public function supportsClass($class) 
            {return $class === 'AdLdap\UserBundle\Security\User';}
     
        public function setUserPWD($userpwd)
            {$UserPWD = $userpwd;}
        }
    mon usertoken:

    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
    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
     
    namespace ADManager\AuthentificationBundle\Controller;
     
    use Symfony\Component\Security\Core\Authentication\Token\AbstractToken;
    use Symfony\Component\Security\Core\Authentication\Token\TokenInterface;
     
    class AuthenticationToken extends AbstractToken implements TokenInterface
        {
        private $credentials;
        private $providerKey;
     
        /**
         * Constructor.
         *
         * @param string $user        The username (like a nickname, email address, etc.), or a UserInterface instance or an object implementing a __toString method.
         * @param string $credentials This usually is the password of the user
         * @param string $providerKey The provider key
         * @param array  $roles       An array of roles
         *
         * @throws \InvalidArgumentException
         */
        public function __construct($user, $credentials, $providerKey, array $roles = array())
            {
            parent::__construct($roles);
     
            if (empty($providerKey)) 
                {throw new \InvalidArgumentException('$providerKey must not be empty.');}
     
            $this->setUser($user);
            $this->credentials = $credentials;
            $this->providerKey = $providerKey;
     
            parent::setAuthenticated(count($roles) > 0);
            }
     
        /**
         * {@inheritdoc}
         */
        public function setAuthenticated($isAuthenticated)
            {
            if ($isAuthenticated) 
                {throw new \LogicException('Cannot set this token to trusted after instantiation.');}
     
            parent::setAuthenticated(false);
            }
     
        public function getCredentials()
            {return $this->credentials;}
     
        public function getProviderKey()
            {return $this->providerKey;}
     
        /**
         * {@inheritdoc}
         */
        public function eraseCredentials()
            {
            parent::eraseCredentials();
     
            $this->credentials = null;
            }
     
        public function serialize()
            {return serialize(array($this->credentials, $this->providerKey, parent::serialize()));}
     
        public function unserialize($str)
            {
            list($this->credentials, $this->providerKey, $parentStr) = unserialize($str);
            parent::unserialize($parentStr);
            }   
        }
    mon service.yml de mon bundle:

    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
     
    parameters:
    #    ad_manager_authentification.example.class: ADManager\AuthentificationBundle\Example
     
    services:
        ADM.security.authentication.provider:
            class: ADManager\AuthentificationBundle\Controller\AuthenticationProvider
     
        ADM.security.user.provider:
            class: ADManager\AuthentificationBundle\Controller\UserProvider
     
        ADM.security.authentication.listener:
            class: ADManager\AuthentificationBundle\Controller\AuthenticationListener
            arguments: [@security.context, @security.authentication.manager]
     
        security.authentication.factory.ADM:
            class:  ADManager\AuthentificationBundle\Factory\AuthenticationFactory
            tags:
                - { name: security.listener.factory }
    mon security_factories.yml:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    services:
        security.authentication.factory.ADM:
            class:  ADManager\AuthentificationBundle\Factory\AuthenticationFactory
            tags:
                - { name: security.listener.factory }
    mon routing.yml:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    _security_login:
        pattern:  /login
        defaults: { _controller: ADMAuthenticationBundle:Authentication:login }
     
    _security_check:
        pattern:  /login_check  
     
    _security_logout:
        pattern:  /logout
    le security.yml de app/config:

    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
    43
    44
    45
    46
     
    security:
        encoders:
            Symfony\Component\Security\Core\User\User: plaintext
     
        factories:
            - "%kernel.root_dir%/../src/ADManager/AuthentificationBundle/Resources/config/security_factories.yml"
     
        role_hierarchy:
     
            ROLE_ADMIN:       ROLE_USER
            ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]
     
        providers:
            in_memory:
                users:
                    user:  { password: userpass, roles: [ 'ROLE_USER' ] }
                    admin: { password: adminpass, roles: [ 'ROLE_ADMIN' ] }
            ADM_provider:
                id: ADM.security.user.provider
     
        firewalls:
            dev:
                pattern:  ^/(_(profiler|wdt)|css|images|js)/
                security: false
     
            login:
                pattern:  ^/demo/secured/login$
                security: false
     
            ADM_provider:
                pattern: ^/DSI/.*
                provider: ADM.provider
                form_login:
                    check_path: _security_check
                    login_path: _security_login
                logout:
                    path: _security_logout
                    target: /DSI/index        #Mettre ici la route vers votre page d'accueil
                #security: true
                ADM: true
                anonymous: false
     
        access_control:
            #- { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY, requires_channel: https }
            #- { path: ^/_internal, roles: IS_AUTHENTICATED_ANONYMOUSLY, ip: 127.0.0.1 }
    les routes sont bien sure déclarées tout comme le bundle.

    Je vous passe les vues..

    J'ai déjà réussi à débuguer pas mal d'erreur mais la je bloque...

    lorsque j'essaie mon url voici le message d'erreur:

    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
     
     
    Whoops, looks like something went wrong.
    1/1 OutOfBoundsException: The index "0" is not in the range [0, -1].
     
        in /MOUNT/WWW/Dsi-Symfony/vendor/symfony/src/Symfony/Component/DependencyInjection/Definition.php line 248
        at Definition->replaceArgument() in /MOUNT/WWW/Dsi-Symfony/vendor/symfony/src/Symfony/Component/DependencyInjection/Compiler/ResolveDefinitionTemplatesPass.php line 124
        at ResolveDefinitionTemplatesPass->resolveDefinition() in /MOUNT/WWW/Dsi-Symfony/vendor/symfony/src/Symfony/Component/DependencyInjection/Compiler/ResolveDefinitionTemplatesPass.php line 49
        at ResolveDefinitionTemplatesPass->process() in /MOUNT/WWW/Dsi-Symfony/vendor/symfony/src/Symfony/Component/DependencyInjection/Compiler/Compiler.php line 119
        at Compiler->compile() in /MOUNT/WWW/Dsi-Symfony/vendor/symfony/src/Symfony/Component/DependencyInjection/ContainerBuilder.php line 437
        at ContainerBuilder->compile() in /MOUNT/WWW/Dsi-Symfony/app/bootstrap.php.cache line 872
        at Kernel->buildContainer() in /MOUNT/WWW/Dsi-Symfony/app/bootstrap.php.cache line 783
        at Kernel->initializeContainer() in /MOUNT/WWW/Dsi-Symfony/app/bootstrap.php.cache line 517
        at Kernel->boot() in /MOUNT/WWW/Dsi-Symfony/app/bootstrap.php.cache line 548
        at Kernel->handle() in /MOUNT/WWW/Dsi-Symfony/web/app_dev.php line 28
    Je précise aussi que dans mon services.yml, netbeans me signal ceci à la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ADM.security.authentication.listener:
            class: ADManager\AuthentificationBundle\Controller\AuthenticationListener
            arguments: [@security.context, @security.authentication.manager]
    "ScannerException while scanning for the next token we had this found character @(64) that cannot start any token"

    voilà j'espère avoir donner assez d'info, j'espère que quelqu'un pourra m'aiguiller

    merci d'avance

  2. #2
    Membre éprouvé Avatar de anta_res
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 93
    Par défaut
    Je viens tout juste de m'en sortir avec le système d'authentification de Symfony et ce n'est pas une mince affaire.

    J'ai eu à faire avec une erreur du même style que la tienne et si mes souvenirs sont bon c’était un problème dans la factory.

    Fait voir le code de ta factory.

  3. #3
    Rédacteur
    Avatar de Viduc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2009
    Messages
    1 445
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Février 2009
    Messages : 1 445
    Billets dans le blog
    2
    Par défaut
    oui c'est fort possible,

    je post le fichier dès demain je ne l'ai pas sous la main ce soir...

  4. #4
    Rédacteur
    Avatar de Viduc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2009
    Messages
    1 445
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Février 2009
    Messages : 1 445
    Billets dans le blog
    2
    Par défaut
    voici ma class factory que j'avais oublié de mettre...

    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 ADManager\AuthentificationBundle\Factory;
    use Symfony\Component\DependencyInjection\ContainerBuilder;
    use Symfony\Component\DependencyInjection\Reference;
    use Symfony\Component\DependencyInjection\DefinitionDecorator;
    use Symfony\Component\Config\Definition\Builder\NodeDefinition;
    use Symfony\Bundle\SecurityBundle\DependencyInjection\Security\Factory\SecurityFactoryInterface;
    use Symfony\Bundle\SecurityBundle\DependencyInjection\Security\Factory\AbstractFactory ;
     
    class AuthenticationFactory extends AbstractFactory
        {
        public function create(ContainerBuilder $container, $id, $config, $userProvider, $defaultEntryPoint)
            {
            $providerId = 'security.authentication.provider.ADM.'.$id;
            $container
                ->setDefinition($providerId, new DefinitionDecorator('ADM.security.authentication.provider'))
                ->replaceArgument(0, new Reference($userProvider));
     
            $listenerId = 'security.authentication.listener.ADM.'.$id;
            $listener = $container
                            ->setDefinition($listenerId, new DefinitionDecorator('ADM.security.authentication.listener'));
                            //->replaceArgument(2, $id); // replace third argument by firewall's id
            return array($providerId, $listenerId, $defaultEntryPoint);
            }
        public function getPosition()
            {return 'pre_auth';}
        public function getKey()
            {return 'ADM';}
        public function addConfiguration(NodeDefinition $node)
            {}
        protected function createAuthProvider(ContainerBuilder $container, $id, $config, $userProviderId)
            {return 'security.authentication.provider.ADM';}
        protected function getListenerId()
            {return 'security.authentication.listener.ADM';}
        }
    en tout cas ça me rassure de voir que je ne suis pas le seul à galérer avec ça

  5. #5
    Membre éclairé

    Inscrit en
    Novembre 2008
    Messages
    424
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 424
    Par défaut
    Citation Envoyé par Viduc Voir le message
    en tout cas ça me rassure de voir que je ne suis pas le seul à galérer avec ça
    Je pense qu'il va falloir mettre en ligne un tuto beaucoup plus complet et détaillé que ceux existant car pour ma part, je n'avais plus sorti d'avirons de cette taille depuis fort longtemps...

    Quand je serai parvenu à mes fins, je consoliderai ma galère (cf authentication-provider-personnalise-formulaires) et la publierai.
    Objectif : mise en place de tous les éléments personnalisés d'authentification avec ou sans utilisation de formulaire mais sans appel à un quelconque service (valeurs renseignées en dur) de façon à ce que toute l'architecture soit là et directement fonctionnelle.

  6. #6
    Rédacteur
    Avatar de Viduc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2009
    Messages
    1 445
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Service public

    Informations forums :
    Inscription : Février 2009
    Messages : 1 445
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par fatbob Voir le message
    Quand je serai parvenu à mes fins, je consoliderai ma galère (cf authentication-provider-personnalise-formulaires) et la publierai.
    Je n'avais pas vu ton embarcation et je vois en effet que je ne suis pas le seul à avoir pris la mer par gros temps

    la modif fonctionne et maintenant j’obtiens ce message:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Whoops, looks like something went wrong.
    1/1 ServiceNotFoundException: The service "security.authentication.manager" has a dependency on a non-existent service "security.user.provider.concrete.adm.provider".
    Je pense qu'en fait un bon tuto simple et claire sur le fonctionnement de tout ceci serait vraiment un plus

  7. #7
    Membre éprouvé Avatar de anta_res
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2006
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2006
    Messages : 93
    Par défaut
    Alors le soucis c'est que dans ton service.yml tu déclare bien ADM.security.authentication.provider mais tu ne lui donne aucun paramètres.

    Or dans ta factory tu lui demande de remplacer le paramètre 0

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
            $container
                ->setDefinition($providerId, new DefinitionDecorator('ADM.security.authentication.provider'))
                ->replaceArgument(0, new Reference($userProvider));
    Essaye de rajouter la ligne :
    Sous la déclaration de ADM.security.authentication.provider dans security.yml

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

Discussions similaires

  1. [2.x] Bundle d'authentification - Solution complète
    Par fatbob dans le forum Symfony
    Réponses: 37
    Dernier message: 01/06/2014, 14h12
  2. [2.x] Création d'un bundle
    Par flutz dans le forum Symfony
    Réponses: 4
    Dernier message: 14/09/2012, 19h33
  3. [2.x] [Bundle] Création d'un bundle "Panier" par la communauté
    Par creativecwx dans le forum Symfony
    Réponses: 29
    Dernier message: 24/03/2012, 21h00
  4. Création de premier bundle
    Par mdh12 dans le forum Plateformes réactives et architectures modulaires
    Réponses: 1
    Dernier message: 06/01/2012, 19h11
  5. [2.x] Création d'un Bundle : classe introuvable
    Par anis-s dans le forum Symfony
    Réponses: 6
    Dernier message: 29/11/2011, 15h58

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