1
我想從偵聽器事件「onKernelRequest」中獲取用戶會話,但security.context不存在並且每次都返回null。如何在onKernelRequest事件中獲取security.context。 Symfony2
如何創建一個請求偵聽器以在安全上下文之後被讀取?
謝謝。
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)),
);
}
}
爲什麼不喜歡* kernel.controller聽事件*當security.context應該準備好,而不是依靠優先? – Rinat
此外,您不應該在服務中注入'service_container'。在你的例子中,你應該改爲注入舊的'security.context'或更新的'security.token_storage'。請參閱http://symfony.com/doc/current/components/dependency_injection.html中的「避免您的代碼取決於容器」部分。 – Tsounabe