自定义实体登录错误Symfony2.7


Custom Entity login error Symfony2.7

我正在使用Symfony 2.7,我在记录用户时遇到了麻烦。我使用自定义实体,并创建了一个具有适当变量和方法的自定义实体"操作符"。我在安全文件中使用了两种登录方法。一个是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()
{
}
}

"Operator"实体和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;
    }

也许你不应该使用password_hash,你必须使用symfony的编码器谁知道如何处理密码的加密。试着在你的代码中实现这样的东西(通常在寄存器控制器中):http://symfony.com/doc/current/book/security.html#dynamically-encoding-a-password

访问此页面http://symfony.com/doc/current/book/security.html以充分了解symfony2安全性的工作原理。

解决方案:

我所做错的是数据库表,因为我将密码字段设置为varchar(25),并且不能完全插入散列密码。我把它改成了varchar(255),现在一切都好了。每个用户现在都可以登录