この問題が何度も議論されたことは知っていますが、いくつかの解決策を見つけたので、それが最善かつ最も効率的なアプローチであるかどうかはわかりません.
私の問題: ユーザー認証を処理するために fosuserbundle を使用していますが、ログインしているユーザーのログイン、パスワードのリセットなどのフォームが表示されないようにしたいと考えています。以下にいくつかのアプローチを示します。
- カーネル イベントに基づく最初のもの (既に実装されています) には、コード https://gist.github.com/walmen/871c13014b80c6a3d05dがあります。
- メソッドのオーバーロードに基づいて同僚が言及した2番目のアプローチ(ログインユーザーに表示されるべきではないロジックを持つ各メソッドのリスナーと重複コードを削除する)
- @RequireAnonymous などのカスタム アノテーションを記述します。
前に述べたように、私はすでに最初のアプローチを実装しましたが、それが最善かつ最も効率的なソリューションであるかどうかはわかりません (このリスナーはリクエストごとに呼び出されます - アプリケーションの負荷が重すぎませんか? リスナーの方法アプリケーションに影響しますか?)。
もちろん、2 番目のアプローチが最も簡単な方法ですが、コードの複製はあまり良いとは言えません。
最後のものが最適かもしれませんが、この例https://gist.github.com/cystbear/1391850を見ると、コントローラーの呼び出し中にイベントを呼び出すことにも問題があることがわかります。
適切な議論と説明を伴うアドバイスやその他のアイデアはありますか?