Configure firewall's kernel exception listener with configured entry point or a default entry point
This commit is contained in:
parent
b604b0ae75
commit
b1222624b2
@ -334,10 +334,10 @@ class SecurityExtension extends Extension
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Determine default entry point
|
// Determine default entry point
|
||||||
$defaultEntryPoint = isset($firewall['entry_point']) ? $firewall['entry_point'] : null;
|
$configuredEntryPoint = isset($firewall['entry_point']) ? $firewall['entry_point'] : null;
|
||||||
|
|
||||||
// Authentication listeners
|
// Authentication listeners
|
||||||
list($authListeners, $defaultEntryPoint) = $this->createAuthenticationListeners($container, $id, $firewall, $authenticationProviders, $defaultProvider, $defaultEntryPoint);
|
list($authListeners, $defaultEntryPoint) = $this->createAuthenticationListeners($container, $id, $firewall, $authenticationProviders, $defaultProvider, $configuredEntryPoint);
|
||||||
|
|
||||||
$listeners = array_merge($listeners, $authListeners);
|
$listeners = array_merge($listeners, $authListeners);
|
||||||
|
|
||||||
@ -350,7 +350,7 @@ class SecurityExtension extends Extension
|
|||||||
$listeners[] = new Reference('security.access_listener');
|
$listeners[] = new Reference('security.access_listener');
|
||||||
|
|
||||||
// Exception listener
|
// Exception listener
|
||||||
$exceptionListener = new Reference($this->createExceptionListener($container, $firewall, $id, $defaultEntryPoint));
|
$exceptionListener = new Reference($this->createExceptionListener($container, $firewall, $id, $configuredEntryPoint ?: $defaultEntryPoint));
|
||||||
|
|
||||||
return array($matcher, $listeners, $exceptionListener);
|
return array($matcher, $listeners, $exceptionListener);
|
||||||
}
|
}
|
||||||
|
@ -35,6 +35,20 @@ class FirewallEntryPointTest extends WebTestCase
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function testItUsesTheConfiguredEntryPointFromTheExceptionListenerWithFormLoginAndNoCredentials()
|
||||||
|
{
|
||||||
|
$client = $this->createClient(array('test_case' => 'FirewallEntryPoint', 'root_config' => 'config_form_login.yml'));
|
||||||
|
$client->insulate();
|
||||||
|
|
||||||
|
$client->request('GET', '/secure/resource');
|
||||||
|
|
||||||
|
$this->assertEquals(
|
||||||
|
EntryPointStub::RESPONSE_TEXT,
|
||||||
|
$client->getResponse()->getContent(),
|
||||||
|
"Custom entry point wasn't started"
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
protected function setUp()
|
protected function setUp()
|
||||||
{
|
{
|
||||||
parent::setUp();
|
parent::setUp();
|
||||||
|
@ -0,0 +1,9 @@
|
|||||||
|
imports:
|
||||||
|
- { resource: ./config.yml }
|
||||||
|
|
||||||
|
security:
|
||||||
|
firewalls:
|
||||||
|
secure:
|
||||||
|
pattern: ^/
|
||||||
|
form_login:
|
||||||
|
check_path: /login_check
|
Reference in New Issue
Block a user