Symfony - я не могу настроить форму с помощью веточки - PullRequest
1 голос
/ 01 апреля 2019

Я хотел бы создать форму для входа в систему с помощью ветки (логин + пароль) и настроить ее.Форма должна выполнять поиск в таблице «Пользователи» и в каталоге 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';
    }


}

Спасибо за помощь!

Ответы [ 2 ]

0 голосов
/ 01 апреля 2019

Я не совсем уверен, как ты изгибаешься, изобретая колесо.Но Symfony подготовил много материала, так как это не редкость в случае использования.

Мне нравится учебник 3.4 по созданию логина: https://symfony.com/doc/3.4/security/form_login_setup.html

(сбоку,есть возможность переключиться на 4.3 или что-то еще, однако учебник 3.4 все еще должен работать, даже в 4.x)

вам не нужен ваш собственный FormType для входа в систему, так как компоненты безопасностиуже обрабатывать отправку формы.Также взгляните на защиту csrf; o)

0 голосов
/ 01 апреля 2019

В настоящее время вы не используете свою форму, сгенерированную ConnexionType, если вы хотите использовать ее в своем файле Twig, вы можете отобразить ее так {{form(form) }}, если отправите ее через свой контроллер.

У вас есть вся необходимая информация здесь

Чтобы не передавать логин и пароль в URL, используйте метод POST

В противном случае я рекомендуюпакет безопасности Пакет безопасности для получения безопасной формы

Я надеюсь, что помог вам.

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