FOSUserBundle未配置编码器:创建新用户

时间:2012-03-09 12:21:42

标签: symfony fosuserbundle

我想在FOSUserBundle(Symfony2)中创建一个新用户,但我总是得到相同的消息(我正在使用php app/console fos:user:create):

  

没有为帐户“MyProject \ UserBundle \ Entity \ User”配置编码器。

导入的顺序正确

public function registerBundles()
{
    $bundles = array(
        //...
        new MyProject\UserBundle\MyProjectUserBundle(),
        new FOS\UserBundle\FOSUserBundle(),
    );

安全文件:

security:
    encoders:
        Symfony\Component\Security\Core\User\User: plaintext

    role_hierarchy:
        ROLE_ADMIN:       ROLE_USER
        ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]

但我总是得到同样的错误......你知道如何解决这个问题吗? solution here {{3}} 对我不起作用

由于

3 个答案:

答案 0 :(得分:40)

您在编码器配置中缺少自己的用户类,例如:

security:
    encoders:
        Symfony\Component\Security\Core\User\User: plaintext
        MyProject\UserBundle\Entity\User: sha512

或者你可以在FOSUserBundle界面上匹配它,如下所示:

security:
    encoders:
        Symfony\Component\Security\Core\User\User: plaintext
        FOS\UserBundle\Model\UserInterface: sha512

答案 1 :(得分:3)

对于Symfony 2.7+,您应该使用此配置:

var Vehicle = function() {
	var age = 21;			//private variable
	this.setAge = function(age2) {age = age2;};
	this.getAge = function() {return age;};
};

var Plane = function() {};
Plane.prototype = Object.create(Vehicle.prototype);

var plane = new Plane();
console.log( plane instanceof Vehicle );
//console.log( plane.getAge() );	//TypeError: plane.getAge is not a function

BUT!你也应该有PHP 5.5和Apache 2.4或Nginx。

答案 2 :(得分:0)

在app / config中编辑security.yml

security:
    encoders:
        AppBundle\Entity\User: bcrypt

    providers:
        fos_userbundle:
            id: fos_user.user_provider.username

在主下方也添加“登出:〜”

对于Symfony 4.x,请参见https://youtu.be/QgYQWGwY9tM