8000 [FrameworkBundle][HttpKernel] Restrict stateless reporting to exception · symfony/symfony@369872a · GitHub
[go: up one dir, main page]

Skip to content

Commit 369872a

Browse files
committed
[FrameworkBundle][HttpKernel] Restrict stateless reporting to exception
1 parent 0bec08f commit 369872a

File tree

6 files changed

+9
-64
lines changed

6 files changed

+9
-64
lines changed

src/Symfony/Bundle/FrameworkBundle/Resources/config/session.xml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,9 +76,7 @@
7676
<argument type="service_locator">
7777
<argument key="session" type="service" id="session" on-invalid="ignore" />
7878
<argument key="initialized_session" type="service" id="session" on-invalid="ignore_uninitialized" />
79-
<argument key="logger" type="service" id="logger" on-invalid="ignore" />
8079
</argument>
81-
<argument>%kernel.debug%</argument>
8280
</service>
8381

8482
<!-- for BC -->

src/Symfony/Bundle/FrameworkBundle/Tests/DependencyInjection/FrameworkExtensionTest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -504,7 +504,7 @@ public function testNullSessionHandler()
504504
$this->assertNull($container->getDefinition('session.storage.native')->getArgument(1));
505505
$this->assertNull($container->getDefinition('session.storage.php_bridge')->getArgument(0));
506506

507-
$expected = ['session', 'initialized_session', 'logger'];
507+
$expected = ['session', 'initialized_session'];
508508
$this->assertEquals($expected, array_keys($container->getDefinition('session_listener')->getArgument(0)->getValues()));
509509
}
510510

@@ -1308,7 +1308,7 @@ public function testSessionCookieSecureAuto()
13081308
{
13091309
$container = $this->createContainerFromFile('session_cookie_secure_auto');
13101310

1311-
$expected = ['session', 'initialized_session', 'logger', 'session_storage', 'request_stack'];
1311+
$expected = ['session', 'initialized_session', 'session_storage', 'request_stack'];
13121312
$this->assertEquals($expected, array_keys($container->getDefinition('session_listener')->getArgument(0)->getValues()));
13131313
}
13141314

src/Symfony/Component/HttpKernel/CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ CHANGELOG
88
* allowed using public aliases to reference controllers
99
* added session usage reporting when the `_stateless` attribute of the request is set to `true`
1010
* added `AbstractSessionListener::onSessionUsage()` to report when the session is used while a request is stateless
11+
* restrict unexpected session usage reporting to exception only
1112

1213
5.0.0
1314
-----

src/Symfony/Component/HttpKernel/EventListener/AbstractSessionListener.php

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -42,12 +42,10 @@ abstract class AbstractSessionListener implements EventSubscriberInterface
4242

4343
protected $container;
4444
private $sessionUsageStack = [];
45-
private $debug;
4645

47-
public function __construct(ContainerInterface $container = null, bool $debug = false)
46+
public function __construct(ContainerInterface $container = null)
4847
{
4948
$this->container = $container;
50-
$this->debug = $debug;
5149
}
5250

5351
public function onKernelRequest(RequestEvent $event)
@@ -130,13 +128,7 @@ public function onKernelResponse(ResponseEvent $event)
130128
return;
131129
}
132130

133-
if ($this->debug) {
134-
throw new UnexpectedSessionUsageException('Session was used while the request was declared stateless.');
135-
}
136-
137-
if ($this->container->has('logger')) {
138-
$this->container->get('logger')->warning('Session was used while the request was declared stateless.');
139-
}
131+
throw new UnexpectedSessionUsageException('Session was used while the request was declared stateless.');
140132
}
141133

142134
public function onFinishRequest(FinishRequestEvent $event)
@@ -148,10 +140,6 @@ public function onFinishRequest(FinishRequestEvent $event)
148140

149141
public function onSessionUsage(): void
150142
{
151-
if (!$this->debug) {
152-
return;
153-
}
154-
155143
if (!$requestStack = $this->container && $this->container->has('request_stack') ? $this->container->get('request_stack') : null) {
156144
return;
157145
}

src/Symfony/Component/HttpKernel/EventListener/SessionListener.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,9 @@
2828
*/
2929
class SessionListener extends AbstractSessionListener
3030
{
31-
public function __construct(ContainerInterface $container, bool $debug = false)
31+
public function __construct(ContainerInterface $container)
3232
{
33-
parent::__construct($container, $debug);
33+
parent::__construct($container);
3434
}
3535

3636
protected function getSession(): ?SessionInterface

src/Symfony/Component/HttpKernel/Tests/EventListener/SessionListenerTest.php

Lines changed: 2 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
namespace Symfony\Component\HttpKernel\Tests\EventListener;
1313

1414
use PHPUnit\Framework\TestCase;
15-
use Psr\Log\LoggerInterface;
1615
use Symfony\Component\DependencyInjection\Container;
1716
use Symfony\Component\DependencyInjection\ServiceLocator;
1817
use Symfony\Component\HttpFoundation\Request;
@@ -200,28 +199,6 @@ public function testSessionUsageExceptionIfStatelessAndSessionUsed()
200199
$listener->onKernelResponse(new ResponseEvent($kernel, $request, HttpKernelInterface::MASTER_REQUEST, new Response()));
201200
}
202201

203-
public function testSessionUsageLogIfStatelessAndSessionUsed()
204-
{
205-
$session = $this->getMockBuilder(Session::class)->disableOriginalConstructor()->getMock();
206-
$session->expects($this->exactly(2))->method('getUsageIndex')->will($this->onConsecutiveCalls(0, 1));
207-
208-
$logger = $this->getMockBuilder(LoggerInterface::class)->disableOriginalConstructor()->getMock();
209-
$logger->expects($this->exactly(1))->method('warning');
210-
211-
$container = new Container();
212-
$container->set('initialized_session', $session);
213-
$container->set('logger', $logger);
214-
215-
$listener = new SessionListener($container, false);
216-
$kernel = $this->getMockBuilder(HttpKernelInterface::class)->disableOriginalConstructor()->getMock();
217-
218-
$request = new Request();
219-
$request->attributes->set('_stateless', true);
220-
$listener->onKernelRequest(new RequestEvent($kernel, $request, HttpKernelInterface::MASTER_REQUEST));
221-
222-
$listener->onKernelResponse(new ResponseEvent($kernel, $request, HttpKernelInterface::MASTER_REQUEST, new Response()));
223-
}
224-
225202
public function testSessionIsSavedWhenUnexpectedSessionExceptionThrown()
226203
{
227204
$session = $this->getMockBuilder(Session::class)->disableOriginalConstructor()->getMock();
@@ -232,7 +209,7 @@ public function testSessionIsSavedWhenUnexpectedSessionExceptionThrown()
232209
$container = new Container();
233210
$container->set('initialized_session', $session);
234211

235-
$listener = new SessionListener($container, true);
212+
$listener = new SessionListener($container);
236213
$kernel = $this->getMockBuilder(HttpKernelInterface::class)->disableOriginalConstructor()->getMock();
237214

238215
$request = new Request();
@@ -265,25 +242,6 @@ public function testSessionUsageCallbackWhenDebugAndStateless()
265242
$container->set('request_stack', $requestStack);
266243

267244
$this->expectException(UnexpectedSessionUsageException::class);
268-
(new SessionListener($container, true))->onSessionUsage();
269-
}
270-
271-
public function testSessionUsageCallbackWhenNoDebug()
272-
{
273-
$session = $this->getMockBuilder(Session::class)->disableOriginalConstructor()->getMock();
274-
$session->method('isStarted')->willReturn(true);
275-
$session->expects($this->exactly(0))->method('save');
276-
277-
$request = new Request();
278-
$request->attributes->set('_stateless', true);
279-
280-
$requestStack = $this->getMockBuilder(RequestStack::class)->getMock();
281-
$requestStack->expects($this->never())->method('getMasterRequest')->willReturn($request);
282-
283-
$container = new Container();
284-
$container->set('initialized_session', $session);
285-
$container->set('request_stack', $requestStack);
286-
287245
(new SessionListener($container))->onSessionUsage();
288246
}
289247

@@ -301,6 +259,6 @@ public function testSessionUsageCallbackWhenNoStateless()
301259
$container->set('initialized_session', $session);
302260
$container->set('request_stack', $requestStack);
303261

304-
(new SessionListener($container, true))->onSessionUsage();
262+
(new SessionListener($container))->onSessionUsage();
305263
}
306264
}

0 commit comments

Comments
 (0)
0