2017-03-06 4 views
1

私はFrameworkExtraBundleを使用してAPIを作成しています。ステートレスなwsse認証(http://symfony.com/doc/current/security/custom_authentication_provider.html)を実装しました。つまり、クライアントの要求ごとにSensio\Bundle\FrameworkExtraBundle\EventListener\SecurityListenerが実行されます。Symfony - ParamConverterListenerの前にSecurityListenerを取得

私は、SecurityListenerより前に実行されており、間違っていることがわかりました。要求をparamに変換する必要はありません。クライアントがこの呼び出しを行う権限を持っていない場合は、検証してください。

質問:リスナーの順番を変更する機能がありますか?SecurityListenerを最初に呼び出し、次にParamConverterListenerと呼び出してください。

答えて

0

リスナーには、オプションの属性priorityを使用して再生することができます。 documentation状態として

"他の任意のタグ属性が0にそのデフォルト値、優先度と呼ばれ、それはリスナーが実行される順序(最も高い優先度を制御する、以前のリスナーが実行されます内部Symfonyリスナーの優先順位は通常-255から255の範囲ですが、独自のリスナーは正または負の整数を使用できます "

優先度を変更する必要があります。

私はsecurity.xmlconverters.xmlの間でvendor/sensio/framework-extra-bundle/Resources/configを間もなくチェックしました - どちらも「優先度」を定義していないので、おそらくデフォルトでは「先着順」です。

+0

実際には、 '@Security'アノテーションの中のparamコンバーターが扱う属性を参照できるようにする必要があります(GitHubの問題:https://github.com/sensiolabs/SensioFrameworkExtraBundle/issues/465#issuecomment-284667275)。 – xabbuh

+0

これを指摘するための@xabbuhに感謝 - 非常によく理解されています!特定の優先順位がない理由を簡単に説明できますか?呼び出されたときに他の場所に設定されているか、単に注文によって設定されていますか? – LBA

+1

イベントリスナーの登録時に優先度を指定しないと、デフォルトでは「0」とみなされます。リスナーが実行される順序は、登録された順番によって異なります。 – xabbuh

関連する問題