0

新しい認証プロバイダーを定義していて、パスワード エンコーダー ファクトリへのアクセスが必要だったので、プロバイダーをサービスとして定義し、エンコーダーを挿入するように要求しました。これが私のサービス定義です:

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

したがって、プロバイダー コンストラクターが type のオブジェクトを取得することを期待していましたSymfony\Component\Security\Core\Encoder\EncoderFactory。しかし、私はSymfony\Component\Security\Core\User\ChainUserProvider代わりに取得しています!!

なぜ私がこのオブジェクトを取得しているのか、代わりに EncoderFactory を取得するにはどうすればよいか知っている人はいますか? ところで、私は FOSUserBundle を使用していますが、これと関係があるかどうかはわかりません

4

1 に答える 1

1

OK、答えが見つかりました。このサービスは認証プロバイダーとして定義されているため、コンストラクターの最初の引数は、セキュリティ コンポーネントによって挿入されるユーザー プロバイダーでなければなりません。引数の順序を変更するとうまくいきました:

services:
    wsse.security.authentication.provider:
        class:  Fdi\CliperestBundle\Security\Authentication\Provider\WsseProvider
        arguments: ['', %kernel.cache_dir%/security/nonces, @security.encoder_factory]
于 2013-04-05T04:00:09.863 に答える