Symfony: как получить доступ к пользователю в обработчике событий KernelEvents :: EXCEPTION? - PullRequest
0 голосов
/ 13 июня 2019

Я использую 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 и т. Д., Чтобы предотвратить возможные атаки. Мониторинг этих исключений не проблема, но как получить соответствующую учетную запись пользователя?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...