[SecurityFactory] RuntimeException: The parent definition [] does not exist.
Bonjour,
J'essaie de mettre en place un bundle d'authentification correspondant à la politique de sécurité de ma boite.
Pour ce faire, j'ai mis en place ce qui est définit dans les Howto "create au custom user provider" et "create a custom authentication provider" et je dois dire que j'ai bien du mal à m'en sortir.
En particulier, lorsque je lance mon appli, je récupère un message :
Citation:
RuntimeException: The parent definition "accessmaster.security.authentication.provider" defined for definition "security.authentication.provider.accessmaster.accessmaster_secured" does not exist.
Ce message d'erreur n'est pas très clair pour moi.
Apparemment, accessmaster_secured est le nom du firewall définit dans /app/config.security.yml
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
security:
# ...
factories:
- "%kernel.root_dir%/../src/Cnamts/SecurityBundle/Resources/config/security_factories.yml"
# ...
firewalls:
accessmaster_secured:
pattern: ^/
accessmaster: true |
Cette erreur à l'air de venir de ma SecurityFactory mais je n'ai pas trouvé dans les différents tutos que j'ai regardé d'informations claires à ce sujet.
Code:
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
|
// src/Acme/SecurityBundle/DependencyInjection/Security/Factory/AccessMasterFactory.php
namespace Acme\SecurityBundle\DependencyInjection\Security\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;
class AccessMasterFactory implements SecurityFactoryInterface
{
public function create(ContainerBuilder $container, $id, $config, $userProvider, $defaultEntryPoint)
{
$providerId = 'security.authentication.provider.accessmaster.'.$id;
$container->setDefinition($providerId, new DefinitionDecorator('accessmaster.security.authentication.provider'))
->replaceArgument(0, new Reference($userProvider));
$listenerId = 'security.authentication.listener.accessmaster.'.$id;
$listener = $container->setDefinition($listenerId, new
DefinitionDecorator('accessmaster.security.authentication.listener'));
return array($providerId, $listenerId, $defaultEntryPoint);
}
// ...
public function getKey()
{
return 'accessmaster';
}
// ...
} |
Merci pour votre aide.