2016-12-12 12 views
0

私は自分のプロジェクトで複数のユーザプロバイダを使用しています。Symfony 2.7の複数のプロバイダ

私のsecurity.ymlは次のようになります。

security: 
    ... 
    firewalls: 
    usertype1: 
     pattern: ^/root/usertype1_area 
     provider: type1_provider 
    usertype2 
     pattern: ^/root 
     provider: type2_provider 
    ... 

すべてが正常に動作していると私は私は1つに例外をスローする場合ことに気づいたことを除いて、右のパターンで間違ったユーザータイプでログインすることはできませんtype1_providerと言って、パス(これはtype2_providerのみを使用する)でログインしようとすると、symfonyはtype1_providertype2_providerを経由していて、例外が発生します。

type2_providerにスローすると、同じことが/root/usertype1_area/loginにも当てはまります。

type1_providerがシャットダウンしたときにtype2ログインにアクセスできるようにしたいので、これは問題です。

推測できますか?これは正常な動作ですか?

はEDIT:アレクサンダーKeil社で指摘したように、私が私のプロバイダの

1つの3Dパーティのサービスに依存しているがやろうとしたものを私の質問では明確ではありませんでした、と私はしたいですこのサービスがダウンしているときにスローしますが、スローしているプロバイダに依存していない他のログインにもアクセスできるようにしたいと考えています。私はこれを達成する方法はありますか?

答えて

0

プロバイダのメソッド「supportsClass」を使用できます。現在のユーザクラスがロードされたプロバイダをサポートしていない場合はfalseを返します。 Symfony \ Component \ Security \ Core \ User \ UserProviderInterfaceを参照してください。

+0

ありがとうございました。私はすでに両方のプロバイダでUserProviderInterfaceを正しく実装しましたが、私の質問は、symfonyがsecurity.ymlで明示的に別のものが提供されているときにプロバイダを使用する必要があるのはなぜですか? – Logar

+0

あなたの質問が例外を得た理由でした。 supportsClassの実装では、これは避けるべきです。なぜsymfonyがすべてのプロバイダを経由しているのか分かりません。 – Rawburner

+0

ご迷惑をおかけして申し訳ございませんが、私のプロバイダの1つがダウンした場合、例外は意図的です。私はいくつかの質問を編集します。 – Logar

関連する問題