У меня есть ситуация, когда мне нужно запустить некоторый код, если пользователь пытается получить доступ к защищенному URL и не аутентифицирован / авторизован.
По умолчанию Symfony обрабатывает неаутентифицированных пользователей, перенаправляя или перенаправляя пользователя в форму входа в систему. Я хотел бы предотвратить это, если метод запроса - POST, а вместо этого эхо-объект JSON.
Наилучший способ, который я могу придумать, - это создать собственный слушатель, который прослушивает событие kernel.request
и проверяет две вещи:
Если это запрос POST, а пользователь не полностью аутентифицирован, я бы повторил объект JSON.
Но мой слушатель (как и ожидалось) запускает все запросы - я бы хотел ограничить его проверкой только того, относится ли запрос к URL, защищенному брандмауэром. Можно ли проверить это программно?
У меня также есть подозрение, что есть более простой способ сделать это, но я не могу понять этого, поэтому, если у кого-то есть какие-то советы, я бы хотел их услышать :)
Изменить
@Problematic - Причина для проверки только запросов с брандмауэром заключается в том, что у меня есть некоторые запросы, которые не защищены брандмауэром, и если мой код запущен, я получу вышеупомянутый объект JSON вместо реального ответа на запрос. .
Прямо сейчас, если я не вошел в систему и не сделал POST-запрос к api / get / something
(который находится за брандмауэром), Symfony вернет HTML-код, описывающий страницу входа. Вместо этого я хочу просто повторить что-то вроде {error: 'Пользователь не авторизован'}
. Но я хочу, чтобы это происходило только для запросов POST.