Я использую Symfony 3.4
и создаю EventSubscriber
для KernelEvents::EXCEPTION
.
Как я могу получить доступ к текущему пользователю в обработчике событий? Я использую следующий код, но он возвращает null
/ annon.
для пользователя. Я предполагаю, что событие происходит до того, как будет обработан процесс входа в систему.
class SecurityEventsSubscriber implements EventSubscriberInterface {
...
public static function getSubscribedEvents() {
return array(
KernelEvents::EXCEPTION => array(array('onKernelException', 0)),
);
}
public function onKernelException(GetResponseForExceptionEvent $event) {
$user = null
if ($this->securityContext->getToken() && $this->securityContext->isGranted('ROLE_USER')) {
$exception = $event->getException();
if ($exception instanceof HttpException && $exception->getStatusCode() == 404) {
// Send message to user...
}
} else {
// Always executed since $this->securityContext->getToken()->getUser() return 'annon.'
}
}
}
Есть ли какое-либо решение для доступа к текущему пользователю в этом обработчике событий?
EDIT:
Я бы хотел отслеживать, есть ли учетные записи пользователей с необычным большим количеством ошибок not_found, method_not_allowed и т. Д., Чтобы предотвратить возможные атаки. Мониторинг этих исключений не проблема, но как получить соответствующую учетную запись пользователя?