Fix CookieClearingLogoutListener DI configuration

This commit is contained in:
Wouter de Jong 2020-06-15 10:02:33 +02:00
parent 8bb0897a6d
commit 47869887c0
6 changed files with 45 additions and 2 deletions

View File

@ -54,7 +54,7 @@
<service id="security.logout.listener.session" class="Symfony\Component\Security\Http\EventListener\SessionLogoutListener" abstract="true" />
<service id="security.logout.listener.cookie_clearing" class="Symfony\Component\Security\Http\Logout\CookieClearingLogoutHandler" abstract="true" />
<service id="security.logout.listener.cookie_clearing" class="Symfony\Component\Security\Http\EventListener\CookieClearingLogoutListener" abstract="true" />
<service id="security.logout.listener.default" class="Symfony\Component\Security\Http\EventListener\DefaultLogoutListener" abstract="true">
<argument type="service" id="security.http_utils" />

View File

@ -11,6 +11,8 @@
namespace Symfony\Bundle\SecurityBundle\Tests\Functional;
use Symfony\Component\BrowserKit\Cookie;
class LogoutTest extends AbstractWebTestCase
{
/**
@ -62,11 +64,25 @@ class LogoutTest extends AbstractWebTestCase
*/
public function testAccessControlDoesNotApplyOnLogout(array $options)
{
$client = $this->createClient($options + ['test_case' => 'LogoutAccess', 'root_config' => 'config.yml']);
$client = $this->createClient($options + ['test_case' => 'Logout', 'root_config' => 'config_access.yml']);
$client->request('POST', '/login', ['_username' => 'johannes', '_password' => 'test']);
$client->request('GET', '/logout');
$this->assertRedirect($client->getResponse(), '/');
}
public function testCookieClearingOnLogout()
{
$client = $this->createClient(['test_case' => 'Logout', 'root_config' => 'config_cookie_clearing.yml']);
$cookieJar = $client->getCookieJar();
$cookieJar->set(new Cookie('flavor', 'chocolate', strtotime('+1 day'), null, 'somedomain'));
$client->request('POST', '/login', ['_username' => 'johannes', '_password' => 'test']);
$client->request('GET', '/logout');
$this->assertRedirect($client->getResponse(), '/');
$this->assertNull($cookieJar->get('flavor'));
}
}

View File

@ -0,0 +1,27 @@
imports:
- { resource: ./../config/framework.yml }
security:
encoders:
Symfony\Component\Security\Core\User\User: plaintext
providers:
in_memory:
memory:
users:
johannes: { password: test, roles: [ROLE_USER] }
firewalls:
default:
form_login:
check_path: login
remember_me: true
require_previous_session: false
logout:
delete_cookies:
flavor: { path: null, domain: somedomain }
stateless: true
access_control:
- { path: ^/login$, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: .*, roles: IS_AUTHENTICATED_FULLY }