Ошибка входа в пользовательский объект Symfony2.7

Я использую Symfony 2.7, и у меня возникают проблемы с регистрацией пользователей. Я использую Custom Entity и создал собственную сущность «Оператор» с соответствующими переменными и методами. Я использую два метода входа в файл безопасности. Один in_memory и я использую его для входа администратора, который работает правильно, а другой user_db, Я использую алгоритм bcrypt для шифрования паролей. Когда я пытаюсь войти в систему, он отображает сообщение «Недействительные учетные данные». Что я делаю неправильно? Спасибо!

security.yml

security:
encoders:
Symfony\Component\Security\Core\User\User: plaintext
Application\AdminBundle\Entity\Operator:
algorithm: bcrypt

providers:
chain_provider:
chain:
providers: [ in_memory, user_db ]

user_db:
entity:
class: ApplicationAdminBundle:Operator
property: username

SecurityController.php

<?php

namespace Application\AdminBundle\Controller;

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

class SecurityController extends Controller
{
/**
* @Route("/login", name="login")
*/
public function loginAction(Request $request)
{
$authenticationUtils = $this->get('security.authentication_utils');

$error = $authenticationUtils->getLastAuthenticationError();

return $this->render('ApplicationAdminBundle:security:login.html.twig',
array(
'error'         => $error,
)
);
}

/**
* @Route("/login_check", name="login_check")
*/
public function loginCheckAction()
{
}

}

Методы Entity и setPassword (), getPassword () оператора

public function setPassword($password)
{
$this->password = password_hash ($password, PASSWORD_BCRYPT);

return $this;
}

/**
* Get password
*
* @return string
*/
public function getPassword()
{
return $this->password;
}

0

Решение

Вероятно, вы не должны использовать password_hash Вы должны использовать кодировщик Symfony, который знает, как обрабатывать шифрование пароля.
Попробуйте реализовать что-то подобное в своем коде (обычно в контроллере реестра): http://symfony.com/doc/current/book/security.html#dynamically-encoding-a-password

Посетите эту страницу http://symfony.com/doc/current/book/security.html чтобы полностью понять, как работает безопасность Symfony2.

1

Другие решения

Решение:

Все, что я сделал неправильно, это таблица базы данных, потому что я установил поле пароля как varchar(25) и хешированный пароль не может быть вставлен полностью. Я изменил это на varchar(255) и теперь все в порядке. Теперь каждый пользователь может войти в систему.

0

По вопросам рекламы [email protected]