2012-03-27 12 views
5

特定のページ(私の場合は支払いページ)にリダイレクトする方法を理解しようとしています有効なサブスクリプションが実行されていません。Symfony2:ユーザーがURLパターンにアクセスできないときに特定のページにリダイレクトする方法

私はすべての行動にisGrantedチェックを入れることでこれを行うことができると知っていますが、私の行動の量を考えれば、時間の大部分を無駄にしているようです。

firewall.access_denied_urlパラメータを調べましたが、たとえば、管理ページへのアクセスがROLE_ADMINを持たないユーザーには拒否されているため、AccessDeniedを支払いページにリンクする必要はありません。支払いページにリダイレクトされても意味がありません。

私はすでに、ユーザーが有効かどうかをチェックし、その場合にアクセス許可を与える有権者を持っていますが、ユーザーが特定のパターンに到達しようとしたときにこの有権者を使用する方法アクセスは拒否されましたか?

ありがとうございます!

答えて

1

JMSAopBundleを使用できます。ドキュメントから

このバンドルはSymfony2のにAOPの機能を追加します。

まだAOPについて聞いていない場合は、基本的にクロスカッティングの懸念事項(例:セキュリティチェック)を専用のクラスに分けて、そのコードをすべての場所で繰り返す必要はありません必要です。

つまり、これにより、サービスレイヤーまたはコントローラー内の特定のメソッドの呼び出しの前後にカスタムコードを実行できます。また、元のメソッドの呼び出しをスキップするか、または例外をスローすることもできます。

+1

シンプルなコントローラリスナを使用できないのはなぜですか? – meze

+1

このバンドルはリスナー経由で仕事をしていると思います。もちろん、あなたはリスナーを介してそれを達成することができます。 –

6

アプリで/設定/ security.ymlファイルセキュリティの下に追加します。

access_denied_url:/ fooの/ error403

symfonyは、ユーザーが/ fooの/ error403ページにアクセスすることはできませんすべてのページをリダイレクトします。

+1

修正すると、転送されます(内部サブリクエスト) –

関連する問題