2011-11-21 50 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