2

登録後、ユーザーが次のようにログインしていることを確認します。

$token = new UsernamePasswordToken($user, null, 'secured_area', $user->getRoles());
$this->get('security.context')->setToken($token);

そして、これが私の成功ハンドラーもトリガーすることを望んでいました:

$this->get('event_dispatcher')->dispatch(
    AuthenticationEvents::AUTHENTICATION_SUCCESS,
    new AuthenticationEvent($token)
);

ハンドラーは、セキュリティ構成内の標準フォームログインで設定されます。

firewalls:
    secured_area:
        form_login:
            success_handler: authentication_handler

成功ハンドラーは、ログイン時に正常にトリガーされますが、登録後ではトリガーされません。

これは単なる設定の問題ですか?および/または、これらすべてを 1 つのイベントで達成できますか?

4

1 に答える 1

0

イベントをトリガーするには、ユーザーを認証する必要があると思います。

$token = $this->get('my.bundle.authentication.manager')->authenticate(new UsernamePasswordToken($user, null, 'secured_area', $user->getRoles()));
$this->get('security.context')->setToken($token);

my.bundle.authentication.managerのエイリアスになりますが、次のsecurity.authentication.managerように登録できます (XML):

<service id="my.bundle.authentication.manager" alias="security.authentication.manager" />
于 2013-01-22T02:24:35.550 に答える