AdvancedUserInterfaceを実装するユーザー向けのカスタム ロジックを実装したいと考えています。
有効になっていないユーザーが一部のゾーンにアクセスできるようにしたいと考えています (アカウント ゾーンなど、間違えた場合に電子メールを変更できる)。
ドキュメントによると:
このインターフェイスのいずれかのメソッドが false を返す場合、認証は失敗します。
これらの状況のいずれかでカスタム ロジックを実行する必要がある場合は、例外リスナーを登録し、それぞれのケースでスローされる特定の例外インスタンスを監視する必要があります。すべての例外は AccountStatusException のサブクラスです
そこで、このクックブックの記事をセキュリティ イベントに適応させてリスナーを作成しようとしました。
<?php
namespace Acme\DemoBundle\Listener;
use Symfony\Component\Security\Core\SecurityContextInterface;
use Symfony\Component\Security\Core\Exception\AccountStatusException;
class NecdocPatientExceptionListener
{
public function onKernelException($event)
{
// Handle event code goes here
}
}
そして、バンドルの services.xml に追加しました:
services:
kernel.listener.acme_user_exception_listener:
class: Acme\DemoBundle\Listener\AcmeExceptionListener
tags:
- { name: kernel.event_listener, event: security.authentication.success, method: onKernelException }
これはAuthenticationFailureEventをキャッチします (onKernelException が呼び出されます) が、AccountStatusExceptionはキャッチしません(onKernelException は呼び出されません)。
セキュリティ コンポーネントのコードを調べたところ、イベントをトリガーせずに例外がキャッチされているようです。とにかくこれらの例外をキャッチする方法はありますか?