Intereting Posts
Как установить пакет Python для глобального использования всеми пользователями (включая www-data) XML Feeds & PHP – ограничение количества элементов Как я рекурсивно удаляю каталог и все его содержимое (файлы + поддиректории) в PHP? Запрос на перекрестный запрос заблокирован: проблема при отправке заголовков в запрос Angular2 на laravel Поддержка XSLT 2.0 PHP. Когда? Разница между e и E в научной нотации использование mysql LOAD statment в PHP завершается с ошибкой, но выполнение этого выполняется с помощью командной строки Странный текст при преобразовании XML-массива в XML Почему оператор pre / post increment ведет себя неправильно? Кодировать / сжимать последовательность повторяющихся целых чисел Какую библиотеку PHP RPC (XML или JSON) вы успешно использовали? полный адрес электронной почты, проходящий по URL-адресу Архитектура приложений ООП: на каком слое сидит ленивый загрузчик? AT Commands PHP MySQL / PHP: как получить столбцы и связанные данные

Как отключить перенаправление после login_check в Symfony 2

Мне нужно отключить перенаправление после проверки входа, потому что мне нужно получить только то, что логин был успешным или нет. После отправки / login_check url дайте мне нужные данные, но продолжайте перенаправление на / login (при сбое).
/ логин после этого пуст.
Я пытаюсь настроить форму входа с помощью extjs 4, поэтому мне нужно проверить прокси-запрос ajax. login_check должен аутентифицироваться, создавать сеанс пользователя и возвращать, был ли он успешным или неудачным, но никакой переадресации нигде.

мой login.html.twig выглядит так:

{% if is_granted("IS_AUTHENTICATED_REMEMBERED") %} { success:true } {% else %} { success: false } {% endif %} 

и в security.yml:

 firewalls: main: form_login: provider: fos_userbundle failure_path: null failure_forward: false 

Related of "Как отключить перенаправление после login_check в Symfony 2"

Создайте обработчик проверки подлинности:

 namespace YourVendor\UserBundle\Handler; // "use" statements here class AuthenticationHandler implements AuthenticationSuccessHandlerInterface, AuthenticationFailureHandlerInterface { public function onAuthenticationSuccess(Request $request, TokenInterface $token) { if ($request->isXmlHttpRequest()) { $result = array('success' => true); return new Response(json_encode($result)); } else { // Handle non XmlHttp request here } } public function onAuthenticationFailure(Request $request, AuthenticationException $exception) { if ($request->isXmlHttpRequest()) { $result = array('success' => false); return new Response(json_encode($result)); } else { // Handle non XmlHttp request here } } } 

Зарегистрируйте обработчик как услугу:

 services: authentication_handler: class: YourVendor\UserBundle\Handler\AuthenticationHandler 

Зарегистрируйте службу в брандмауэре:

 firewalls: main: form_login: success_handler: authentication_handler failure_handler: authentication_handler 

Это приблизительный пример, чтобы дать вам общую идею – вам нужно будет выяснить детали самостоятельно. Если вы застряли и нуждаетесь в дополнительных разъяснениях, задайте свои вопросы в комментариях, и я попытаюсь привести пример.

Нормальный поток symfony – перенаправить вас на страницу входа, если вы не вошли в систему, что отлично подходит для людей. Но вы, похоже, ищете программное решение.

Вы пробовали установить _target_path в своей форме, чтобы объявить, что должна быть «следующая страница»? Symfony всегда будет перенаправлять вас куда-нибудь, но вы можете установить это где угодно, где бы вы ни хотели.

Я нашел эти две страницы полезными для описания внутренней работы формы входа:

  • Как настроить форму входа в систему (поиск _target_path)
  • Страница безопасности в справочнике