Войдите в систему с уже существующей базой данных в Symfony 3

Я пытаюсь настроить процесс формы в моем новейшем приложении Symfony. Я следил за кулинарной книгой Symfony, но безуспешно.

Я хочу использовать уже существующую базу данных, где поля loginUtil и passUtil couple являются моими требованиями к подключению.

Итак, я установил свой файл security.yml следующим образом:

security:
    providers:
        main:
            entity: Customer\CustomerBundle\Entity\utilisateur
            property: loginUtil
    encoders:
        Customer\CustomerBundle\Entity\utilisateur:
        algorithm: sha1

    firewalls:
        dev:
            pattern: ^/(_(profiler|wdt)|css|images|js)/
            security: false
        main:
            pattern: ^/
            anonymous: true
            provider: main
            form_login:
                login_path: /login
                check_path: /login_check
            logout:
                path: /logout
                target: home_page

Установите мою сущность, которая реализует интерфейс UserInterface в соответствии с документацией

<?php
namespace Customer\CustomerdBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Security\Core\User\UserInterface;

/**
 * utilisateur
 *
 * @ORM\Table(name = "utilisateur")
 * @ORM\Entity(repositoryClass = "Customer\CustomerdBundle\Repository\utilisateurRepository")
 */

class utilisateur implements UserInterface
{
    private $username;
    private $password;
    private $salt;
    private $roles;

    // declaration of other fields from pre existing database

    // setters and getters
    // ...
    //

    public function getRoles()
    {
        return $this->roles;
    }

    public function getPassword()
    {
        $this->password = $this->getPassUtil();
        return $this->password;
    }

    public function getsalt()
    {
        return $this->salt;
    }

    public function getusername()
    {
        return $this->username = $this->getLoginUtil();
    }

    public function eraseCredentials()
    {
    }
}
?>

Мой контроллер, который возвращает только мое представление формы:

<?php

namespace Customer\CustomerdBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;

class DefaultController extends Controller
{
    public function indexAction()
    {
        return $this->render('CustomerCustomerBundle:Default:tableLum.html.twig');
    }

    public function loginAction()
    {
        return $this->render('CustomerCustomerBundle:Default:formLogin.html.twig');
    }
}

Мой routing.yml

homepage:
    path:     /
    defaults: { _controller: CustomerCustomerBundle:Default:index }

login:
    path: /login
    defaults:
    _controller: CustomerCustomerBundle:Default:login

login_check:
    path: /login_check

logout:
    path: /logout

И моя аутентификационная форма:

{% extends "CustomerCustomerBundle::layout.html.twig" %}

{% block maincontentFormLogin %}
    <form action = "{{ path('login_check') }}" method = "post">
        <label for = "username">Login :</label>
        <input type = "text" id = "username" name = "_username" value = "" />
        <br />
        <label for = "password">Mot de passe :</label>
        <input type = "password" id = "password" name = "_password" />
        <br />
        <input type = "submit" value = "Connexion" />
    </form>
{% endblock %}

Я видел в /var/logs/dev.log, что мое имя пользователя отправлено правильно и запрашивает доктрину, но не пароль, он пуст. Так что логически мои учетные данные плохие.

Кто-нибудь может помешать мне понять, что я делаю неправильно?

Как выглядит ваш контроллер login_check?

user4524061 08.06.2018 10:04

@Brent Извините, вопрос обновлен, спасибо

akio 08.06.2018 10:16
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
2
86
1

Ответы 1

Наконец я нашел решение.

Я пока не понимаю почему. Мне нужно было добавить параметры somme в раздел кодировщиков следующим образом:

encoders:
    Customer\CustomerBundle\Entity\utilisateur:
        algorithm: sha1
        encode_as_base64: false
        iterations: 1

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

Спасибо вам, ребята !!

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

Cerad 08.06.2018 19:47

Другие вопросы по теме