Ich versuche, die Benutzersitzung von einem Listener-Ereignis "onKernelRequest" abzurufen, aber der security.context existiert noch nicht und gibt jedesmal Null zurück.So erhalten Sie security.context bei onKernelRequest-Ereignis. Symfony2
Wie kann ich einen Request Listener erstellen, der nach dem Sicherheitskontext gelesen werden soll?
Vielen Dank.
class CurrencyListener implements EventSubscriberInterface {
private $default_currency;
private $serviceContainer;
public function __construct($default_currency, $serviceContainer) {
$this->default_currency = strtoupper($default_currency);
$this->serviceContainer = $serviceContainer;
}
public function onKernelRequest(GetResponseEvent $event) {
$request = $event->getRequest();
var_dump($this->serviceContainer->get('security.context')->getToken());
}
public static function getSubscribedEvents() {
return array(
KernelEvents::REQUEST => array(array('onKernelRequest', 15)),
);
}
}
Warum nicht hören Ereignis wie * kernel.controller * wenn security.context anstatt sich auf Priorität bereit sein sollte? – Rinat
Außerdem sollten Sie den 'service_container' nicht in Ihre Dienste einfügen. In Ihrem Beispiel sollten Sie stattdessen den alten 'security.context' oder den neueren' security.token_storage' injizieren. Siehe zum Beispiel den Abschnitt "Vermeiden Sie, dass Ihr Code vom Container abhängt" von http://symfony.com/doc/current/components/dependency_injection.html. – Tsounabe