2011-11-21 47 views
21

我试图启用FOSUserBundle以及FOSFacebookBundle。
我有任何网址异常。服务“security.authentication.manager”依赖于不存在的服务“security.user.provider.concrete.fos_userbundle”

任何想法家伙?

ServiceNotFoundException的:服务 “security.authentication.manager” 对一个不存在的服务依赖 “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

你清除缓存? –

+0

是的,当然,我做了 – synthetic

回答

30

我将fos_userbundle id添加到提供者部分,现在它工作正常。

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

使用'fos_user.user_manager'是_deprecated_。更好地使用'fos_user.user_provider.username' [源](https://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/Resources/doc/user_manager.md#securitybundle-integration) – KmeCnin

+0

我刚刚得到这个错误。但你的问题不是身份证。但是你忘了在你的防火墙中设置你的提供者名称('fos_userbundle')'form_login.provider' – user3502626

0

我尝试了所有提供的解决方案在stackoverflow,但没有为我工作。
我的解决办法是重新命名fos_userbundlefos_user安全:供应商:部分和安全:防火墙:主:form_login:供应商:
希望这可以帮助那里的人。

1

对于symfony3

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