不存在的服务" fos_user.user_provider.username_email"

时间:2013-05-21 21:01:28

标签: symfony fosuserbundle symfony-2.3

我按照指南安装位于https://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/Resources/doc/index.md

的FOSUserBundle

我的安全档案:

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

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

    providers:
        fos_userbundle:
            id: fos_user.user_provider.username_email

    firewalls:
        dev:
            pattern:  ^/(_(profiler|wdt)|css|images|js)/
            security: false

        main:
            pattern: ^/
            form_login:
                provider: fos_userbundle
                csrf_provider: form.csrf_provider
            logout:       true
            anonymous:    true

    access_control:
        - { path: ^/admin/, role: ROLE_ADMIN }

然而,在完成所有步骤后,我收到一个错误:

ServiceNotFoundException: The service "security.authentication.manager" has a dependency on a non-existent service "fos_user.user_provider.username_email".

可能导致什么原因?

2 个答案:

答案 0 :(得分:4)

您使用的是没有username_email提供商的FOSUserBundle 1.0。通过将composer.json更改为:“friendsofsymfony / user-bundle”:“dev-master”升级到FOSUserBundle 2.0,

2.0版本中有很多好东西,包括一堆有用的事件。不幸的是,它从未作为稳定版本正式发布。因此是dev-master版本。

答案 1 :(得分:0)

无法重现这一点。也许这是一个神奇的“依赖服务”错误。上次我们通过删除整个供应商目录和composer.lock文件并重新运行composer update命令来解决这个问题。也许值得一试。