服务“security.authentication.manager”依赖于不存在的服务“security.user.provider.concrete.fos_userbundle”

Posted

技术标签:

【中文标题】服务“security.authentication.manager”依赖于不存在的服务“security.user.provider.concrete.fos_userbundle”【英文标题】:The service “security.authentication.manager” has a dependency on a non-existent service “security.user.provider.concrete.fos_userbundle” 【发布时间】:2015-05-29 16:11:48 【问题描述】:

我遇到了一个非常令人沮丧的问题,甚至不知道在哪里进行故障排除,因为 Symfony 没有提及违规者。

我需要构建一个 OAUTH 服务器来验证一个应用程序上的移动用户,该应用程序已经有 Sonata User Admin/FOSUser 捆绑包完美运行。

我选择安装之前完美使用过的 FOSOAuthServerBundle,没有太多麻烦。然而今天,我不断收到以下错误:

 [Symfony\Component\DependencyInjection\Exception\ServiceNotFoundException]
 The service "security.authentication.manager" has a dependency on a non-existent service "security.user.provider.concrete.user_provider".

这是我的相关文件:

config.yml

fos_user:
    db_driver:      orm # can be orm or odm
    firewall_name:  main
    user_class:     Application\Sonata\UserBundle\Entity\User

    group:
        group_class:   Application\Sonata\UserBundle\Entity\Group
        group_manager: sonata.user.orm.group_manager                    

    service:
        user_manager: sonata.user.orm.user_manager

fos_oauth_server:
    db_driver: orm
    client_class:        AppBundle\Entity\Client
    access_token_class:  AppBundle\Entity\AccessToken
    refresh_token_class: AppBundle\Entity\RefreshToken
    auth_code_class:     AppBundle\Entity\AuthCode
    service:
        user_provider:  sonata.user.orm.user_manager
        options:
            supported_scopes: user

security.yml

providers:
    fos_userbundle:
        id: fos_user.user_manager

encoders:
    FOS\UserBundle\Model\UserInterface: sha512    

firewalls:

    dev:
        pattern: ^/(_(profiler|wdt|error)|css|images|js)/
        security: false

    oauth_token:
        pattern:    ^/oauth/v2/token
        security:   false

    admin:
        pattern:            /admin(.*)
        context:            user
        form_login:
            provider:       fos_userbundle
            login_path:     /admin/login
            use_forward:    false
            check_path:     /admin/login_check
            failure_path:   null
        logout:
            path:           /admin/logout
        anonymous:          true

    oauth_authorize:
        pattern:    ^/oauth/v2/auth
        form_login:
            provider: user_provider
            check_path: _security_check
            login_path: _demo_login
        anonymous: true

    api:
        pattern:    ^/api
        fos_oauth:  true
        stateless:  true

    main:
        pattern:             .*
        context:             user
        form_login:
            provider:       fos_userbundle
            login_path:     /login
            use_forward:    false
            check_path:     /login_check
            failure_path:   null
        logout:             true
        anonymous:          true

The service "security.authentication.manager" has a dependency on a non-existent service "security.user.provider.concrete.fos_userbundle" 这里有一个几乎类似的问题,但他的问题是通过在提供程序下省略 fos_userbundle id 引起的,在我的情况下就是这种情况。

请有人帮忙解释一下

【问题讨论】:

【参考方案1】:

你的错误一定是在这里:

oauth_authorize:
        pattern:    ^/oauth/v2/auth
        form_login:
            provider: user_provider #where is this provider? shouldnt it be fos_userbundle
            check_path: _security_check
            login_path: _demo_login
        anonymous: true

【讨论】:

我不敢相信,我盯着这个东西看了一整天,没发现。非常感谢我的兄弟抽出时间提供帮助

以上是关于服务“security.authentication.manager”依赖于不存在的服务“security.user.provider.concrete.fos_userbundle”的主要内容,如果未能解决你的问题,请参考以下文章

springboot-服务治理

微服务基础服务的基本组件

服务发现的基本原理

OSGI的系统服务

Linux用户管理-服务服务管理

微服务 六:服务网关