2011-11-21 6 views
21

Estoy intentando habilitar FOSUserBundle y FOSFacebookBundle.
Tengo una excepción en cualquier url.El servicio "security.authentication.manager" tiene una dependencia en un servicio inexistente "security.user.provider.concrete.fos_userbundle"

¿Alguna idea, chicos?

ServiceNotFoundException: El servicio "security.authentication.manager" tiene una dependencia en un servicio inexistente "security.user.provider.concrete.fos_userbundle"

config.yml

fos_user: 
    db_driver: mongodb 
    firewall_name: main 
    user_class: Acme\AcmeBundle\Document\User 
fos_twitter: 
    file: %kernel.root_dir%/../vendor/twitteroauth/twitteroauth/twitteroauth.php 
    consumer_key: '' 
    consumer_secret: '' 
    callback_url: '' 
fos_facebook: 
    file: %kernel.root_dir%/../vendor/facebook/src/base_facebook.php 
    alias: facebook 
    app_id: '' 
    secret: '' 
    cookie: true 
    permissions: [email, user_birthday, user_location] 
services: 
    my.facebook.user: 
     class: Acme\AcmeBundle\Security\FacebookProvider 
     arguments: 
      facebook: "@fos_facebook.api" 
      userManager: "@fos_user.user_manager" 
      validator: "@validator" 
      container: "@service_container" 





security:  
    factories: 
     - "%kernel.root_dir%/../vendor/bundles/FOS/TwitterBundle/Resources/config/security_factories.xml" 
     - "%kernel.root_dir%/../vendor/bundles/FOS/FacebookBundle/Resources/config/security_factories.xml" 

    providers: 
     my_fos_facebook_provider: 
      id: my.facebook.user      

    firewalls:  
     public: 
      pattern: ^/.* 
      form_login: 
      login_path: /login 
      provider: fos_userbundle   
      fos_facebook: 
      app_url: "" 
      server_url: "" 
      login_path: /login 
      check_path: /login_check/facebook 
      provider: my_fos_facebook_provider 
      anonymous: true 
      logout: 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 } 

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

¿Se borra la memoria caché? –

+0

sí, por supuesto, lo hice – synthetic

Respuesta

30

I se agregó la identificación id de id_usuario a proveedores y funciona bien ahora.

providers: 
    my_fos_facebook_provider: 
     id: my.facebook.user 
    fos_userbundle: 
     id: fos_user.user_manager 
+3

El uso de 'fos_user.user_manager' está _deprecated_. Mejor uso 'fos_user.user_provider.username' [fuente] (https://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/Resources/doc/user_manager.md#securitybundle-integration) – KmeCnin

+0

Acabo de recibir este error. Pero tu problema no era la identificación. Pero olvidaste configurar tu nombre de proveedor ('fos_userbundle') en tu firewall' form_login.provider' – user3502626

0

Intenté todas las soluciones proporcionadas en stackoverflow, pero ninguna funcionó para mí.
Mi solución fue cambiar el nombre de fos_userbundle a fos_user en de seguridad: los proveedores de: sección y en de seguridad: cortafuegos: principal: form_login: Proveedor de:.
Espero que esto pueda ayudar a alguien por ahí.

1

Para symfony3

providers: 
    in_memory: 
     memory: ~ 
    fos_userbundle: 
     id: fos_user.user_provider.username 
Cuestiones relacionadas