【问题标题】:FOSUserBundle no encoder has been configured : creating a new userFOSUserBundle 未配置编码器:创建新用户
【发布时间】:2012-03-26 21:35:42
【问题描述】:

我想在 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 不适合我

谢谢

【问题讨论】:

    标签: symfony fosuserbundle


    【解决方案1】:

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

    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
    

    【讨论】:

    • 谢谢!它有效,我还必须使用php -c 然后使用date.timezone 的usr > private > php.ini 的路径,最后创建用户。谢谢塞尔达克!
    【解决方案2】:

    对于 Symfony 2.7+,你应该使用这个配置:

    security:
        encoders:
            FOS\UserBundle\Model\UserInterface: bcrypt
    

    但是!你还应该有 PHP 5.5 和 Apache 2.4 或 Nginx。

    【讨论】:

      【解决方案3】:

      编辑 app/config 中的 security.yml

      security:
          encoders:
              AppBundle\Entity\User: bcrypt
      
          providers:
              fos_userbundle:
                  id: fos_user.user_provider.username
      

      在 main 下也添加“logout:~”

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

      【讨论】:

        猜你喜欢
        • 2012-11-16
        • 2012-12-25
        • 2012-06-02
        • 1970-01-01
        • 1970-01-01
        • 2014-11-27
        • 1970-01-01
        • 2021-09-12
        • 2014-03-12
        相关资源
        最近更新 更多