Я хотел бы создать форму входа в twig (логин + пароль) и настроить ее. Форма должна искать в таблице Users и каталоге LDAP, если введенная информация существует.
Более того, когда я валидирую форму, я не хочу, чтобы логин и пароль находились в URL.
При валидации, если пользователь существует, он перенаправляется на страницу, в противном случае он останется на странице входа.
Мне удалось сделать форму, настроенную, но которая возвращает логин и пароль в URL.
Это выглядит так:
введите описание изображения здесь
А это код в ветке:
{% extends 'base.html.twig' %}
{% block stylesheets %}
<link href = "//maxcdn.bootstrapcdn.com/bootstrap/3.3.0/css/bootstrap.min.css" rel = "stylesheet" id = "bootstrap-css">
<script src = "//maxcdn.bootstrapcdn.com/bootstrap/3.3.0/js/bootstrap.min.js"></script>
<script src = "//code.jquery.com/jquery-1.11.1.min.js"></script>rel = "stylesheet">
{% endblock %}
{% block body %}
<form class = "navbar-form navbar-center">
<div class = "input-group">
<span class = "input-group-addon"><i class = "glyphicon glyphicon-user"></i></span>
<input id = "text" type = "text" class = "form-control" name = "login" value = "" placeholder = "Login">
</div>
<div class = "input-group">
<span class = "input-group-addon"><i class = "glyphicon glyphicon-lock"></i></span>
<input id = "password" type = "password" class = "form-control" name = "password" value = "" placeholder = "Mot de passe">
</div>
<button type = "submit" class = "btn btn-primary">Valider</button>
<br/><br/>
Pas de compte académique ? <a href = "{{path('paquets_index')}}">Demande de création de compte</a>
</form>
{% endblock %}
Теперь моя цель убедиться, что нет логина и пароля, которые встречаются в URL-адресе для проверки. Это будет просто проверка и функция, она покажет да или нет на следующей странице. И я не могу этого сделать.
Кроме того, с функциональной точки зрения, полезно ли использовать конструктор formType из моей сущности Users? Или я могу просто довольствоваться такой формой, которая отправит обратно контролеру введенную информацию для проверки?
Если сомневаетесь, вот мой конструктор форм
<?php
namespace Site\PagesBundle\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;
use Symfony\Component\Form\Extension\Core\Type\PasswordType;
use Symfony\Component\Form\Extension\Core\Type\TextType;
class ConnexionType extends AbstractType
{
/**
* {@inheritdoc}
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('identifiant', TextType::class)
->add('password', PasswordType::class,array(
'attr' => array(
'placeholder'=> 'Mot de passe',
'label' =>'Mot de passe',
)
))
;
}/**
* {@inheritdoc}
*/
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'Site\PagesBundle\Entity\User'
));
}
/**
* {@inheritdoc}
*/
public function getBlockPrefix()
{
return 'site_pagesbundle_user';
}
}
Спасибо за вашу помощь !






В настоящее время вы не используете свою форму, сгенерированную ConnexionType, если вы хотите использовать ее в своем файле Twig, вы можете отобразить ее таким образом {{form(form) }}, если вы отправляете ее через свой контроллер.
У вас есть вся необходимая информация здесь
Затем, чтобы не передавать логин и пароль в URL, используйте метод POST
В противном случае я рекомендую пакет безопасности Пакет безопасности, чтобы получить безопасную форму.
Надеюсь, я помог вам.
Спасибо за ответ, наконец-то удалось отредактировать форму :)
Я не совсем уверен, насколько вы склонны изобретать велосипед. Но у symfony есть много всего подготовленного, так как это не такой уж необычный вариант использования.
Мне нравится учебник 3.4 по созданию логина: https://symfony.com/doc/3.4/security/form_login_setup.html
(сбоку есть возможность переключиться на 4.3 или что-то еще, однако учебник 3.4 должен работать даже в 4.x)
вам не особенно нужен собственный FormType для входа в систему, поскольку компоненты безопасности уже обрабатывают отправку форм. Также взгляните на защиту csrf ;o)
Спасибо за ваш ответ ! Я только что прочитал статью. Так будет ли он искать в таблице пользователей, если введенные данные существуют, и автоматически перенаправлять? Однако не упоминается, позволяет ли эта утилита проверять и таблицу пользователей, и каталог LDAP, так ли это?
я подозреваю, что вам нужно добавить нового UserProvider.
@AgarioFR symfony.com/doc/current/security/ldap.html должен сделать свое дело, когда провайдер цепочки пользователей сначала проверяет ldap, а затем db
Спасибо ! Итак, это проверит наличие LDAP, но означает ли это, что мне нужно создать форму входа для LDAP и одну для пользователей БД? Или я могу совместить оба?
@AgarioFR Я считаю, что вы можете комбинировать это, хотя я совершенно уверен, что поиск в Google поможет вам узнать (вы не будете первым с этой проблемой; о)
Привет, да, моя цель именно в том, чтобы использовать formType, сохраняя при этом точно такой же рендеринг (дизайн), как тот, который я разместил в своем первом посте с фотографиями. Потому что, используя formType, я не могу получить рендеринг Bootstrap 3 с правильно вставленными глификонами.