FriendsOfSymfony / FOSUserBundle

Provides user management for your Symfony project. Compatible with Doctrine ORM & ODM, and custom storages.

Home Page:https://symfony.com/doc/master/bundles/FOSUserBundle/index.html

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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

treadmillian opened this issue · comments

Symfony FOSUserBundle versions: v2.1.2

symfony/symfony: v3.4.15

Description of the problem including expected versus actual behavior:

Followed the guide https://symfony.com/doc/master/bundles/FOSUserBundle/index.html to the letter, but receive this error:

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

Steps to reproduce:

  1. Just updating the security.yml file causes the issue. Is the service fos_user.user_checker meant to be set-up somewhere? If so, how?

From:

firewalls:
        # disables authentication for assets and the profiler, adapt it according to your needs
        dev:
            pattern: ^/(_(profiler|wdt)|css|images|js)/
            security: false

        main:
            anonymous: ~

To:

    firewalls:
        # disables authentication for assets and the profiler, adapt it according to your needs
        dev:
            pattern: ^/(_(profiler|wdt)|css|images|js)/
            security: false

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

            logout:       true
            anonymous:    true

Provide logs (if relevant):

In CheckExceptionOnInvalidReferenceBehaviorPass.php line 31:
                                                                               
  The service "security.authentication.provider.dao.main" has a dependency on  
   a non-existent service "fos_user.user_checker".                             
                                                                               

Script Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::clearCache handling the symfony-scripts event terminated with an exception

                                                                                   
  [RuntimeException]                                                               
  An error occurred when executing the "'cache:clear --no-warmup'" command:        
                                                                                   
                                                                                   
                                                                                   
                                                                                   
  In CheckExceptionOnInvalidReferenceBehaviorPass.php line 31:                     
                                                                                   
    The service "security.authentication.provider.dao.main" has a dependency on    
     a non-existent service "fos_user.user_checker".

routes:

php bin/console debug:router
 ----------------------------------- ---------- -------- ------ ----------------------------------- 
  Name                                Method     Scheme   Host   Path                               
 ----------------------------------- ---------- -------- ------ ----------------------------------- 
  _wdt                                ANY        ANY      ANY    /_wdt/{token}                      
  _profiler_home                      ANY        ANY      ANY    /_profiler/                        
  _profiler_search                    ANY        ANY      ANY    /_profiler/search                  
  _profiler_search_bar                ANY        ANY      ANY    /_profiler/search_bar              
  _profiler_phpinfo                   ANY        ANY      ANY    /_profiler/phpinfo                 
  _profiler_search_results            ANY        ANY      ANY    /_profiler/{token}/search/results  
  _profiler_open_file                 ANY        ANY      ANY    /_profiler/open                    
  _profiler                           ANY        ANY      ANY    /_profiler/{token}                 
  _profiler_router                    ANY        ANY      ANY    /_profiler/{token}/router          
  _profiler_exception                 ANY        ANY      ANY    /_profiler/{token}/exception       
  _profiler_exception_css             ANY        ANY      ANY    /_profiler/{token}/exception.css   
  _twig_error_test                    ANY        ANY      ANY    /_error/{code}.{_format}           
  fos_user_security_login             GET|POST   ANY      ANY    /login                             
  fos_user_security_check             POST       ANY      ANY    /login_check                       
  fos_user_security_logout            GET|POST   ANY      ANY    /logout                            
  fos_user_profile_show               GET        ANY      ANY    /profile/                          
  fos_user_profile_edit               GET|POST   ANY      ANY    /profile/edit                      
  fos_user_registration_register      GET|POST   ANY      ANY    /register/                         
  fos_user_registration_check_email   GET        ANY      ANY    /register/check-email              
  fos_user_registration_confirm       GET        ANY      ANY    /register/confirm/{token}          
  fos_user_registration_confirmed     GET        ANY      ANY    /register/confirmed                
  fos_user_resetting_request          GET        ANY      ANY    /resetting/request                 
  fos_user_resetting_send_email       POST       ANY      ANY    /resetting/send-email              
  fos_user_resetting_check_email      GET        ANY      ANY    /resetting/check-email             
  fos_user_resetting_reset            GET|POST   ANY      ANY    /resetting/reset/{token}           
  fos_user_change_password            GET|POST   ANY      ANY    /profile/change-password           
  app_homepage                        ANY        ANY      ANY    /                                  
 ----------------------------------- ---------- -------- ------ ----------------------------------- 

Turns out that for firewalls.main

user_checker: fos_user.user_checker should actually be user_checker: security.user_checker.

I discovered this in the file: vendor/friendsofsymfony/user-bundle/FOSUserBundle.php

Line 38: $container->addCompilerPass(new InjectUserCheckerPass());

Subsequently, in vendor/friendsofsymfony/user-bundle/DependencyInjection/Compiler/InjectUserCheckerPass.php

Lline 34: $loginManager->replaceArgument(1, new Reference('security.user_checker.'.$firewallName));

commented

I've just created a new Symfony 3.4 project and installed FOSUserBundle 2.1 and I had the same issue too.
Please, correct the documentation.

security.yml > You need to change
user_checker: fos_user.user_checker
to
user_checker: security.user_checker

Update November 2019: documentation is still misleading. Needs a fix.