diff options
-rw-r--r-- | Core/Authentication/Token/TokenInterface.php | 6 | ||||
-rw-r--r-- | Http/RememberMe/ResponseListener.php | 5 | ||||
-rw-r--r-- | Tests/Http/RememberMe/ResponseListenerTest.php | 21 |
3 files changed, 28 insertions, 4 deletions
diff --git a/Core/Authentication/Token/TokenInterface.php b/Core/Authentication/Token/TokenInterface.php index fb9fd14..be90802 100644 --- a/Core/Authentication/Token/TokenInterface.php +++ b/Core/Authentication/Token/TokenInterface.php @@ -47,8 +47,10 @@ interface TokenInterface extends \Serializable /** * Returns a user representation. * - * @return mixed either returns an object which implements __toString(), or - * a primitive string is returned. + * @return mixed Can be a UserInterface instance, an object implementing a __toString method, + * or the username as a regular string + * + * @see AbstractToken::setUser() */ public function getUser(); diff --git a/Http/RememberMe/ResponseListener.php b/Http/RememberMe/ResponseListener.php index 2253c5d..ec5f006 100644 --- a/Http/RememberMe/ResponseListener.php +++ b/Http/RememberMe/ResponseListener.php @@ -13,6 +13,7 @@ namespace Symfony\Component\Security\Http\RememberMe; use Symfony\Component\HttpKernel\Event\FilterResponseEvent; use Symfony\Component\HttpKernel\KernelEvents; +use Symfony\Component\HttpKernel\HttpKernelInterface; use Symfony\Component\EventDispatcher\EventSubscriberInterface; /** @@ -27,6 +28,10 @@ class ResponseListener implements EventSubscriberInterface */ public function onKernelResponse(FilterResponseEvent $event) { + if (HttpKernelInterface::MASTER_REQUEST !== $event->getRequestType()) { + return; + } + $request = $event->getRequest(); $response = $event->getResponse(); diff --git a/Tests/Http/RememberMe/ResponseListenerTest.php b/Tests/Http/RememberMe/ResponseListenerTest.php index dfbb718..bca2c43 100644 --- a/Tests/Http/RememberMe/ResponseListenerTest.php +++ b/Tests/Http/RememberMe/ResponseListenerTest.php @@ -11,6 +11,7 @@ namespace Symfony\Component\Security\Tests\Http\RememberMe; +use Symfony\Component\HttpKernel\HttpKernelInterface; use Symfony\Component\Security\Http\RememberMe\ResponseListener; use Symfony\Component\Security\Http\RememberMe\RememberMeServicesInterface; use Symfony\Component\HttpFoundation\Request; @@ -34,7 +35,22 @@ class ResponseListenerTest extends \PHPUnit_Framework_TestCase $listener->onKernelResponse($this->getEvent($request, $response)); } - public function testRemmeberMeCookieIsNotSendWithResponse() + public function testRememberMeCookieIsNotSendWithResponseForSubRequests() + { + $cookie = new Cookie('rememberme'); + + $request = $this->getRequest(array( + RememberMeServicesInterface::COOKIE_ATTR_NAME => $cookie, + )); + + $response = $this->getResponse(); + $response->headers->expects($this->never())->method('setCookie'); + + $listener = new ResponseListener(); + $listener->onKernelResponse($this->getEvent($request, $response, HttpKernelInterface::SUB_REQUEST)); + } + + public function testRememberMeCookieIsNotSendWithResponse() { $request = $this->getRequest(); @@ -71,13 +87,14 @@ class ResponseListenerTest extends \PHPUnit_Framework_TestCase return $response; } - private function getEvent($request, $response) + private function getEvent($request, $response, $type = HttpKernelInterface::MASTER_REQUEST) { $event = $this->getMockBuilder('Symfony\Component\HttpKernel\Event\FilterResponseEvent') ->disableOriginalConstructor() ->getMock(); $event->expects($this->any())->method('getRequest')->will($this->returnValue($request)); + $event->expects($this->any())->method('getRequestType')->will($this->returnValue($type)); $event->expects($this->any())->method('getResponse')->will($this->returnValue($response)); return $event; |