在询问服务时,为什么会收到错误的对象

时间:2013-04-04 16:36:59

标签: symfony service dependency-injection

我正在定义一个新的身份验证提供程序,我需要访问密码编码器工厂,因此我将我的提供程序定义为服务并要求注入编码器。这是我的服务定义:

services:
    wsse.security.authentication.provider:
        class:  Fdi\CliperestBundle\Security\Authentication\Provider\WsseProvider
        arguments: [@security.encoder_factory,'', %kernel.cache_dir%/security/nonces]

所以我期待我的提供者构造函数会得到一个Symfony\Component\Security\Core\Encoder\EncoderFactory类型的对象。但我得到Symfony\Component\Security\Core\User\ChainUserProvider而不是!!

有谁知道为什么我得到这个对象,我该怎么做才能获得EncoderFactory?顺便说一下,我正在使用FOSUserBundle,不知道它是否与此相关

1 个答案:

答案 0 :(得分:1)

好的,我找到了答案。由于此服务被定义为身份验证提供程序,因此构造函数的第一个参数必须是安全组件插入的用户提供程序。改变参数的顺序就可以了:

services:
    wsse.security.authentication.provider:
        class:  Fdi\CliperestBundle\Security\Authentication\Provider\WsseProvider
        arguments: ['', %kernel.cache_dir%/security/nonces, @security.encoder_factory]