2013-06-12 4 views
0

Что делать, если вы хотите войти в систему с помощью пользовательской формы с полями только для имени пользователя и пароля?Пользовательский логин на Symfony2 (без шлюза)

Как вы знаете, на Symfony2 эти формы входа генерируются каркасом, и они отправляют информацию на шлюз, который обрабатывает все ... Я хочу, чтобы POST-учетные данные были выполнены в php-скрипте, выполненном мной, где я получил POST переменные, а затем создать сеанс (например, вы делаете это в решении без рамки)

Пожалуйста, не делайте ответы/комментарии о передовом опыте, это предназначено как эксперимент.

В настоящее время у меня есть html-форма, которая POST для скрипта php. И, конечно же, таблица с именем пользователя, солью и паролем, созданная в Symphony. Как проверить учетные данные и как создать сеанс?

+0

так же, как и вне symfony ... значения формы - это значения формы ... С чем вы столкнулись? – prodigitalson

+0

Входные формы на самом деле не генерируются каркасом. Вы делаете их самостоятельно: http://symfony.com/doc/current/book/security.html. Они обрабатываются каркасом, но не сгенерированы. – Cerad

+0

Вы хотите зарегистрировать пользователя в php-скрипте, создав переменную в сеансе? –

ответ

0

Ну, для этого «правильный» способ требует настройки вашего собственного провайдера аутентификации. Что, откровенно говоря, довольно больно, хотя вы выйдете с хорошим пониманием системы безопасности.

Поваренная книга может помочь: http://symfony.com/doc/current/cookbook/security/custom_authentication_provider.html

Рассмотрим начиная клонированием: Symfony \ Bundle \ SecurityBundle \ внедрение зависимости \ Security \ Factory \ FormLoginFactory. Или, по крайней мере, использовать его в качестве стартового примера.

Я не пробовал это сам, но я думаю, что вы могли бы просто предоставить вам собственный класс Аутентификации, установив параметр:

<parameter key="security.authentication.provider.dao.class">Symfony\Component\Security\Core\Authentication\Provider\DaoAuthenticationProvider</parameter> 

Если это работает, то это будет проще, чем сделать полную поставщика.

И, наконец, вы могли бы сделать то, что я сделал в первый раз, и просто отправить сообщение на обычный контроллер и обработать все это самостоятельно. Вы должны жестко закодировать имя стены огня, но в противном случае это прямолинейно. Пара других потоков с подробностями о том, как это сделать. Детали, как правило, немного изменятся с каждой версией работы фрейма, поэтому, глядя на класс фреймворка, вероятно, ваш лучший выбор. Мой код от S2.0, поэтому я не буду публиковать его.

Смежные вопросы