[SecurityBundle] Cache contexts per request in FirewallMap
This commit is contained in:
parent
a5d134b136
commit
ffacec12c3
@ -26,18 +26,24 @@ class FirewallMap implements FirewallMapInterface
|
||||
{
|
||||
protected $container;
|
||||
protected $map;
|
||||
private $contexts;
|
||||
|
||||
public function __construct(ContainerInterface $container, array $map)
|
||||
{
|
||||
$this->container = $container;
|
||||
$this->map = $map;
|
||||
$this->contexts = new \SplObjectStorage();
|
||||
}
|
||||
|
||||
public function getListeners(Request $request)
|
||||
{
|
||||
if ($this->contexts->contains($request)) {
|
||||
return $this->contexts[$request];
|
||||
}
|
||||
|
||||
foreach ($this->map as $contextId => $requestMatcher) {
|
||||
if (null === $requestMatcher || $requestMatcher->matches($request)) {
|
||||
return $this->container->get($contextId)->getContext();
|
||||
return $this->contexts[$request] = $this->container->get($contextId)->getContext();
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user