2011-05-20 10 views
1

私は妥当性確認のためにSpring Securityを使用している春のMVCアプリケーションに取り組んでいます。私はログイン時にいくつかの作業をしたいと思いますし、複数の場所(enter link description hereに入っています)で提案を見て、これをアプリケーションリスナを使って実現しました。私は先に行って、そのようにそれを実装しました:アプリケーションリスナーがイベント通知を受信して​​いません

@Named 
public class AccountLoginListener implements ApplicationListener<AuthenticationSuccessEvent> { 

    @Inject 
    AccountService accountService; 

    @Override 
    public void onApplicationEvent(AuthenticationSuccessEvent event) { 
     Account account = (Account) event.getAuthentication().getDetails(); 
     ... 
     accountService.saveAccount(account); 
    } 

} 

残念ながら、AuthenticationSuccessEventは捕獲され、私はデバッグするとき、onApplicationEvent関数が呼び出されることはありません取得していないようです。私はXMLファイルで追加の設定をしていませんが、そうする必要はないと思います。いくつかの設定が欠落していますか、何か間違っていますか?

ありがとうございます!あなたは春のセキュリティ3を使用している場合は、AuthenticationSuccessHandlerを実装して、アプリケーションのコンテキスト内でこのBeanを構成する必要があり

+0

このBean/Listenerをどのようにインスタンス化して作成していますか? –

+0

私の春の文脈には、このクラスが基本パッケージ内にある ''があります。 – idbentley

+0

'@ Named'アノテーションはどのような型ですか? –

答えて

2

idbentley

+1

)このDavidに感謝します - 私は違いが何であるかを見ていきます。私の問題は、アプリケーションのWebコンテキストがSpringコンテキストとは異なるコンテキストであるために終了しました。 – idbentley

2
public class AuthenticationSuccessListener 
    implements ApplicationListener<InteractiveAuthenticationSuccessEvent> { 

    @Inject 
    AccountService accountService; 

    @Override 
    public void onApplicationEvent(InteractiveAuthenticationSuccessEvent event) { 
     Account account = (Account) event.getAuthentication().getDetails(); 
     accountService.saveAccount(account); 
    } 
} 
関連する問題