Можно ли увидеть, защищен ли URL / маршрут программно за брандмауэром?

У меня есть ситуация, когда мне нужно запустить некоторый код, если пользователь пытается получить доступ к защищенному URL и не аутентифицирован / авторизован.

По умолчанию Symfony обрабатывает неаутентифицированных пользователей, перенаправляя или перенаправляя пользователя в форму входа в систему. Я хотел бы предотвратить это, если метод запроса - POST, а вместо этого эхо-объект JSON.

Наилучший способ, который я могу придумать, - это создать собственный слушатель, который прослушивает событие kernel.request и проверяет две вещи:

  • проверяет, является ли метод запроса POST
  • ] проверяет, полностью ли пользователь аутентифицирован

Если это запрос POST, а пользователь не полностью аутентифицирован, я бы повторил объект JSON.

Но мой слушатель (как и ожидалось) запускает все запросы - я бы хотел ограничить его проверкой только того, относится ли запрос к URL, защищенному брандмауэром. Можно ли проверить это программно?

У меня также есть подозрение, что есть более простой способ сделать это, но я не могу понять этого, поэтому, если у кого-то есть какие-то советы, я бы хотел их услышать :)

Изменить
@Problematic - Причина для проверки только запросов с брандмауэром заключается в том, что у меня есть некоторые запросы, которые не защищены брандмауэром, и если мой код запущен, я получу вышеупомянутый объект JSON вместо реального ответа на запрос. .

Прямо сейчас, если я не вошел в систему и не сделал POST-запрос к api / get / something (который находится за брандмауэром), Symfony вернет HTML-код, описывающий страницу входа. Вместо этого я хочу просто повторить что-то вроде {error: 'Пользователь не авторизован'} . Но я хочу, чтобы это происходило только для запросов POST.

6
задан Steven Mercatante 14 October 2011 в 16:29
поделиться