Symfony 3.4-安装FOSUserBundle时不存在的服务

时间:2018-09-24 19:32:15

标签: php symfony fosuserbundle

我刚刚使用Symfony 3.4开始了一个新的空白项目,并且首先在此Documentation页面之后配置了FOSUserBundle。

我已经尝试了两次删除所有内容并再次从头开始,但是在清除缓存时出现了此错误:

In CheckExceptionOnInvalidReferenceBehaviorPass.php line 31:

  The service "security.authentication.provider.dao.main" has a dependency on a non-existent service "fos_user.user_checker". 

config.yml

[...]
fos_user:
    db_driver: orm # other valid values are 'mongodb' and 'couchdb'
    firewall_name: main
    user_class: AppBundle\Entity\User
    from_email:
        address: "%mailer_user%"
        sender_name: "%mailer_user%"

parameters.yml

parameters:
    database_path: '%kernel.project_dir%/var/data/data.sqlite'
    mailer_transport: smtp
    mailer_host: smtp.mailtrap.io
    mailer_user: ***
    mailer_password: ***
    secret: ***

routing.yml

app:
    resource: '@AppBundle/Controller/'
    type: annotation
fos_user:
    resource: "@FOSUserBundle/Resources/config/routing/all.xml"

security.yml

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

    role_hierarchy:
        ROLE_ADMIN:       ROLE_USER
        ROLE_SUPER_ADMIN: ROLE_ADMIN

    providers:
        fos_userbundle:
            id: fos_user.user_provider.username

    firewalls:
        main:
            pattern: ^/
            user_checker: fos_user.user_checker
            form_login:
                provider: fos_userbundle
                csrf_token_generator: security.csrf.token_manager

            logout:       true
            anonymous:    true

    access_control:
    - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/admin/, role: ROLE_ADMIN }

很显然,我在new FOS\UserBundle\FOSUserBundle(),中添加了AppKernel.php

$bundles = [
            new Symfony\Bundle\FrameworkBundle\FrameworkBundle(),
            new Symfony\Bundle\SecurityBundle\SecurityBundle(),
            new Symfony\Bundle\TwigBundle\TwigBundle(),
            new Symfony\Bundle\MonologBundle\MonologBundle(),
            new Symfony\Bundle\SwiftmailerBundle\SwiftmailerBundle(),
            new Doctrine\Bundle\DoctrineBundle\DoctrineBundle(),
            new Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle(),
            new FOS\UserBundle\FOSUserBundle(),
            new AppBundle\AppBundle(),
        ];

我正在使用2.0FOSUserBundle的{​​{1}}版本。

1 个答案:

答案 0 :(得分:3)

对于Symfony 3.4和FOSUserBundle 2.1,此问题似乎继续存在。

修复: 在security.yml

中更改以下内容
security:
    firewalls:
        main:
            user_checker: fos_user.user_checker

security:
    firewalls:
        main:
            user_checker: security.user_checker