2011-11-21 35 views
21

Tôi đang cố gắng kích hoạt FOSUserBundle cũng như FOSFacebookBundle.
Tôi có ngoại lệ tại bất kỳ url nào.Dịch vụ "security.authentication.manager" có sự phụ thuộc vào dịch vụ không tồn tại "security.user.provider.concrete.fos_userbundle"

Bất kỳ ý tưởng nào?

ServiceNotFoundException: Dịch vụ "security.authentication.manager" có một sự phụ thuộc vào một dịch vụ không tồn tại "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

Bạn đã xóa bộ nhớ cache? –

+0

vâng, tất nhiên, tôi đã làm – synthetic

Trả lời

30

tôi đã thêm id fos_userbundle vào phần nhà cung cấp và nó hoạt động tốt ngay bây giờ.

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

Việc sử dụng 'fos_user.user_manager' là _deprecated_. Sử dụng tốt hơn 'fos_user.user_provider.username' [source] (https://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/Resources/doc/user_manager.md#securitybundle-integration) – KmeCnin

+0

Tôi vừa gặp lỗi này. Nhưng vấn đề của bạn không phải là id. Nhưng bạn quên đặt tên nhà cung cấp của mình ('fos_userbundle') trong tường lửa' form_login.provider' của bạn – user3502626

0

Tôi đã thử tất cả các giải pháp được cung cấp trong stackoverflow, nhưng không có giải pháp nào phù hợp với tôi.
Giải pháp của tôi đã đổi tên fos_userbundle để fos_user trong an ninh: các nhà cung cấp: phần và trong bảo mật: tường lửa: chính: form_login: nhà cung cấp:.
Hy vọng điều này có thể giúp ai đó ngoài kia.

1

Đối symfony3

providers: 
    in_memory: 
     memory: ~ 
    fos_userbundle: 
     id: fos_user.user_provider.username 
Các vấn đề liên quan