diff --git a/src/Symfony/Bundle/SecurityBundle/DependencyInjection/Configuration.php b/src/Symfony/Bundle/SecurityBundle/DependencyInjection/Configuration.php index 3e4dfaed0e..f9e44dd74e 100644 --- a/src/Symfony/Bundle/SecurityBundle/DependencyInjection/Configuration.php +++ b/src/Symfony/Bundle/SecurityBundle/DependencyInjection/Configuration.php @@ -156,7 +156,9 @@ class Configuration ->prototype('scalar')->end() ->end() ->end() - ->booleanNode('anonymous')->defaultFalse()->end() + ->arrayNode('anonymous') + ->scalarNode('key')->defaultValue(function () { return uniqid(); })->end() + ->end() ->arrayNode('switch_user') ->scalarNode('provider')->end() ->scalarNode('parameter')->defaultValue('_switch_user')->end() diff --git a/src/Symfony/Bundle/SecurityBundle/DependencyInjection/SecurityExtension.php b/src/Symfony/Bundle/SecurityBundle/DependencyInjection/SecurityExtension.php index 8666053d8f..62571051f5 100644 --- a/src/Symfony/Bundle/SecurityBundle/DependencyInjection/SecurityExtension.php +++ b/src/Symfony/Bundle/SecurityBundle/DependencyInjection/SecurityExtension.php @@ -345,9 +345,22 @@ class SecurityExtension extends Extension } // Anonymous - if ($firewall['anonymous']) { - $listeners[] = new Reference('security.authentication.listener.anonymous'); - $authenticationProviders[] = 'security.authentication.provider.anonymous'; + if (isset($firewall['anonymous'])) { + $listenerId = 'security.authentication.listener.anonymous.'.$id; + $container + ->setDefinition($listenerId, new DefinitionDecorator('security.authentication.listener.anonymous')) + ->setArgument(1, $firewall['anonymous']['key']) + ; + + $listeners[] = new Reference($listenerId); + + $providerId = 'security.authentication.provider.anonymous.'.$id; + $container + ->setDefinition($providerId, new DefinitionDecorator('security.authentication.provider.anonymous')) + ->setArgument(0, $firewall['anonymous']['key']) + ; + + $authenticationProviders[] = $providerId; $hasListeners = true; } diff --git a/src/Symfony/Bundle/SecurityBundle/Resources/config/security_listeners.xml b/src/Symfony/Bundle/SecurityBundle/Resources/config/security_listeners.xml index a837c4ad33..2f5063f826 100644 --- a/src/Symfony/Bundle/SecurityBundle/Resources/config/security_listeners.xml +++ b/src/Symfony/Bundle/SecurityBundle/Resources/config/security_listeners.xml @@ -37,18 +37,17 @@ Symfony\Component\Security\Core\Authentication\Provider\PreAuthenticatedAuthenticationProvider Symfony\Component\Security\Core\Authentication\Provider\AnonymousAuthenticationProvider - SomeRandomValue - %security.anonymous.key% + - %security.anonymous.key% + diff --git a/src/Symfony/Bundle/SecurityBundle/Tests/DependencyInjection/SecurityExtensionTest.php b/src/Symfony/Bundle/SecurityBundle/Tests/DependencyInjection/SecurityExtensionTest.php index ba6e96b0cf..a3cccf1a00 100644 --- a/src/Symfony/Bundle/SecurityBundle/Tests/DependencyInjection/SecurityExtensionTest.php +++ b/src/Symfony/Bundle/SecurityBundle/Tests/DependencyInjection/SecurityExtensionTest.php @@ -83,7 +83,7 @@ abstract class SecurityExtensionTest extends \PHPUnit_Framework_TestCase 'security.authentication.listener.form.secure', 'security.authentication.listener.basic.secure', 'security.authentication.listener.digest.secure', - 'security.authentication.listener.anonymous', + 'security.authentication.listener.anonymous.secure', 'security.access_listener', 'security.authentication.switchuser_listener.secure', ),