0

アプリで複数のユーザー プロバイダーを使用しています。

security:
    providers:
        chain_provider:
            chain:
                providers: [entity, json]
        entity:
            id: myapp.entity.user_provider
        json:
            id: myapp.json.user_provider

ここで、サービスからユーザーをロードする必要があります

services:
    myapp.my.service:
        class: AppBundle\Services\My
        argument: [@the.defined.chain.provider]
// AppBundle\Services\My
namespace AppBundle\Services;
class My
{
    public function loadUser($username)
    {
        return $this->userProvider->loadUserByUsername($username);
    }
}

チェーンプロバイダーを明示的に使用するにはどうすればよいですか?

4

2 に答える 2

1

SecurityBundle のコードを見ると、サービスを使用するだけなsecurity.user.provider.concrete.{name}ので、あなたの場合security.user.provider.concrete.chain_provider

于 2015-07-24T23:16:56.407 に答える
1

プロバイダーはサービスとして初期化され、Chain プロバイダーでも同じことができます。

services:
    the.defined.chain.provider:
        class: Symfony\Component\Security\Core\User\ChainUserProvider
        arguments: [ [ @myapp.entity.user_provider, @myapp.json.user_provider ] ]

次に、security.yml ファイルで、プロバイダーを次のように置き換えます。

security:
    providers:
        default: 
            id: the.defined.chain.provider

そして、あなたのサービスファイルにあなたの例を残してくださいmyapp.my.service

そのため、ユーザー プロバイダー チェーンを自分でサービスとして作成し (これは、セキュリティ バンドルが構成に対して行うことです)、それを 2 つの場所で使用します。

于 2015-07-24T14:06:26.387 に答える