Skip to content

Commit c7c8110

Browse files
Merge branch '4.4' into 5.0
* 4.4: [DI] Fix CheckTypeDeclarationPass [Security/Http] don't require the session to be started when tracking its id [DI] fix preloading script generation
2 parents e263a9d + 4f613fd commit c7c8110

File tree

3 files changed

+22
-2
lines changed

3 files changed

+22
-2
lines changed

Firewall/AnonymousAuthenticationListener.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@
1919
use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;
2020
use Symfony\Component\Security\Core\Exception\AuthenticationException;
2121

22+
// Help opcache.preload discover always-needed symbols
23+
class_exists(AnonymousToken::class);
24+
2225
/**
2326
* AnonymousAuthenticationListener automatically adds a Token if none is
2427
* already present.

Firewall/ContextListener.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -100,10 +100,10 @@ public function authenticate(RequestEvent $event)
100100

101101
if (null !== $session) {
102102
$usageIndexValue = $session instanceof Session ? $usageIndexReference = &$session->getUsageIndex() : 0;
103-
$sessionId = $session->getId();
103+
$sessionId = $request->cookies->get($session->getName());
104104
$token = $session->get($this->sessionKey);
105105

106-
if ($this->sessionTrackerEnabler && $session->getId() === $sessionId) {
106+
if ($this->sessionTrackerEnabler && \in_array($sessionId, [true, $session->getId()], true)) {
107107
$usageIndexReference = $usageIndexValue;
108108
}
109109
}

Tests/Firewall/ContextListenerTest.php

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -344,6 +344,23 @@ public function testDeauthenticatedEvent()
344344
$this->assertNull($tokenStorage->getToken());
345345
}
346346

347+
public function testWithPreviousNotStartedSession()
348+
{
349+
$session = new Session(new MockArraySessionStorage());
350+
351+
$request = new Request();
352+
$request->setSession($session);
353+
$request->cookies->set('MOCKSESSID', true);
354+
355+
$usageIndex = $session->getUsageIndex();
356+
357+
$tokenStorage = new TokenStorage();
358+
$listener = new ContextListener($tokenStorage, [], 'context_key', null, null, null, [$tokenStorage, 'getToken']);
359+
$listener(new RequestEvent($this->getMockBuilder(HttpKernelInterface::class)->getMock(), $request, HttpKernelInterface::MASTER_REQUEST));
360+
361+
$this->assertSame($usageIndex, $session->getUsageIndex());
362+
}
363+
347364
protected function runSessionOnKernelResponse($newToken, $original = null)
348365
{
349366
$session = new Session(new MockArraySessionStorage());

0 commit comments

Comments
 (0)