Symfony2: FOSUserBundle - один брандмауэр, несколько форм входа / точек входа - PullRequest
4 голосов
/ 02 декабря 2011

У меня есть приложение symfony2, работающее с одним брандмауэром, сконфигурированным с FOSUserBundle для обработки персистентности бэкэнд-пользователя. Это прекрасно работает.

Тем не менее, я хочу иметь больше, чем 1 форму входа / страницу. Мне нужна «стандартная» страница / страница входа, используемая брандмауэром, но я также хочу встраивать формы в другие страницы для более удобного доступа для входа.

Например, на странице / booking / require_login я попытался встроить шаблон формы входа в систему из FOSUserBundle, что достаточно просто. Я установил _target_path для пересылки при любых успешных попытках, которые работают хорошо. Однако, если это неудачная попытка войти в систему, я перенаправляюсь обратно в стандартную форму / форму входа вместо того, чтобы оставаться на моей странице / booking / require_login для отображения с соответствующими ошибками. Я вижу, что есть параметр fault_path , но, похоже, это нечто глобальное, а не то, что вы можете передать как параметр типа _target_path .

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

Мне не нужен отдельный брандмауэр, это просто альтернативный способ доступа к тому же логину с тем же набором ограничений.

Может ли кто-нибудь предложить какие-либо указатели на чистый (или легкий!) Подход?

1 Ответ

2 голосов
/ 03 января 2012

Вы можете внедрить обработчик сбоев (внедрить AuthenticationFailureHandlerInterface), где вы можете создать перенаправление на основе данных запроса (например, перенаправление на URL-адрес на основе параметра сообщения fault_path).

И это очень просто внедрить, вам просто нужно создать службу с именем security.authentication.failure_handler в вашей конфигурации DIC.

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