Я пытаюсь создать EventListener в Symfony, который прослушивает главный запрос, и если запрос пытается получить доступ к маршруту за брандмауэром, чтобы установить флаг в сеансе. Например. если запрос направлен к брандмауэру / администратору, то EventListener должен создать флаг в сессия. Единственный способ, который я могу придумать, - это ввести пользователя и AccessDecisionManager и проверить, имеет ли пользователь доступ к странице, когда роль установлена на IS_AUTHENTICATED_ANONYMOUSLY, и проверить, полностью ли аутентифицирован пользователь. Что-то похожее:
if (!$uthorizationChecker->isGranted('IS_AUTHENTICATED_ANONYMOUSLY') && is $authorizationChecker->isGranted('IS_AUTHENTICATED_FULLY')) {
// the user can't access the resources when ANONYMOUS
// this must be a secured resource
}
Есть ли более элегантный способ добиться этого? Должен быть метод, который мне не хватает, который просто сообщает вам, что запрос пытается или получил доступ к защищенной странице. Возможно, вы также можете прослушивать некоторые события брандмауэра?




https://symfony.com/doc/current/security.html
Посмотрите на раздел контроля доступа. Вы можете в основном указать маршруты, которые необходимо аутентифицировать, в зависимости от определенной роли. Затем для всех этих маршрутов вы можете просто установить флаг, не выполняя эту проверку, поскольку по умолчанию он не пропускает неавторизованного пользователя.
Вы пишете свой собственный аутентификатор, используете acl, чтобы убедиться, что страницы, соответствующие подстановочному знаку, будут использовать ваш собственный аутентификатор, и помещаете туда общий код, поэтому вы делаете это только один раз symfony.com/doc/current/security/…
Да, я думал об этом, но мне было интересно, есть ли другой способ, поскольку я не хочу загрязнять все контроллеры какой-либо логикой (задача действительно неактуальна и не будет оправдана). Таким образом, я ищу решение на глобальном уровне. Возможно, прослушивание событий, запускаемых компонентом безопасности? Что-то, что говорит мне: "Хорошо, я только что отрисовал защищенную страницу за брандмауэром"