15
15
use Symfony \Component \HttpKernel \Event \GetResponseEvent ;
16
16
use Symfony \Component \HttpKernel \Event \FilterResponseEvent ;
17
17
use Symfony \Component \HttpKernel \KernelEvents ;
18
- use Symfony \Component \Security \Core \Authentication \Token \AnonymousToken ;
18
+ use Symfony \Component \Security \Core \Authentication \AuthenticationTrustResolver ;
19
+ use Symfony \Component \Security \Core \Authentication \AuthenticationTrustResolverInterface ;
19
20
use Symfony \Component \Security \Core \Authentication \Token \Storage \TokenStorageInterface ;
20
21
use Symfony \Component \Security \Core \Authentication \Token \TokenInterface ;
21
22
use Symfony \Component \Security \Core \Exception \UsernameNotFoundException ;
@@ -39,8 +40,9 @@ class ContextListener implements ListenerInterface
39
40
private $ userProviders ;
40
41
private $ dispatcher ;
41
42
private $ registered ;
43
+ private $ trustResolver ;
42
44
43
- public function __construct (TokenStorageInterface $ tokenStorage , array $ userProviders , $ contextKey , LoggerInterface $ logger = null , EventDispatcherInterface $ dispatcher = null )
45
+ public function __construct (TokenStorageInterface $ tokenStorage , array $ userProviders , $ contextKey , LoggerInterface $ logger = null , EventDispatcherInterface $ dispatcher = null , AuthenticationTrustResolverInterface $ trustResolver = null )
44
46
{
45
47
if (empty ($ contextKey )) {
46
48
throw new \InvalidArgumentException ('$contextKey must not be empty. ' );
@@ -58,6 +60,7 @@ public function __construct(TokenStorageInterface $tokenStorage, array $userProv
58
60
$ this ->sessionKey = '_security_ ' .$ contextKey ;
59
61
$ this ->logger = $ logger ;
60
62
$ this ->dispatcher = $ dispatcher ;
63
+ $ this ->trustResolver = $ trustResolver ?: new AuthenticationTrustResolver ('Symfony\Component\Security\Core\Authentication\Token\AnonymousToken ' , 'Symfony\Component\Security\Core\Authentication\Token\RememberMeToken ' );
61
64
}
62
65
63
66
/**
@@ -121,7 +124,7 @@ public function onKernelResponse(FilterResponseEvent $event)
121
124
$ request = $ event ->getRequest ();
122
125
$ session = $ request ->getSession ();
123
126
124
- if ((null === $ token = $ this ->tokenStorage ->getToken ()) || ($ token instanceof AnonymousToken )) {
127
+ if ((null === $ token = $ this ->tokenStorage ->getToken ()) || $ this -> trustResolver -> isAnonymous ($ token )) {
125
128
if ($ request ->hasPreviousSession ()) {
126
129
$ session ->remove ($ this ->sessionKey );
127
130
}
0 commit comments