1

要求されたURLに応じて、ユーザーのクレデンシャルの有効期限が切れたときに別のアクションを実行したいSymfony2.1アプリケーションがあります。デフォルトでログインURLにリダイレクトするfos_userbundleを使用しています。私の場合、リダイレクトする代わりに、クライアントが処理する特別な応答を返したいと思います。

アイデア#1:
これを達成するために何をする必要があるのか​​正確にはわかりません。コードをステップスルーして、Symfony\Component\Security\Http\Firewall\ExceptionListenerスローされた例外をキャッチしている場所を見つけました。最終的にはaRedirectResponseが設定されます。ここのどこかに引っ掛かり、別の応答を設定する必要があると思いますが、まだ見つけていません。

アイデア#2:
不足しているクレデンシャルを別の方法で処理する別のファイアウォールを設定する必要があると思います。これはもっと多くの作業になるようで、まったく正しく感じられません。

私の両方のアイデアは、ベースから大きく外れている可能性があります。考えるのはそれほど難しいことではないようですが、私は高低を検索し、答えを見つけることができません。

4

1 に答える 1

0

2.1 と 2.0 でカーネル リスナーの形式が変更されたかどうかはわかりませんが、おそらく onKernelRequest メソッドを処理し、認証されているかどうかを確認するリスナーを作成できます。

kernel.listener.pageloadlistener:
    class: Acme\DemoBundle\EventListener\PageLoadListener
    tags:
        - { name: kernel.event_listener, event: kernel.request, method: onKernelRequest  }

class PageLoadListener
{
    public function onKernelRequest(GetResponseEvent $event)
    {
       //Do whatever here, you could pass in the security context in the construct of this class to get the user
    }
}
于 2012-08-31T03:59:51.220 に答える