web-dev-qa-db-ja.com

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]

しかし、私はいつも同じエラーを受け取ります...これを修正する方法を知っていますか? ここでの解決策 は私のために働いていません

ありがとう

13
Paul

エンコーダー構成に独自のユーザーのクラスがありません。次に例を示します。

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
40
Seldaek

Symfony 2.7以降の場合、次の構成を使用する必要があります。

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

だが!また、PHP 5.5およびApache2.4またはNginxが必要です。

3
D.Dimitrioglo

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 を参照してください。

0
Robert Saylor