Spring3.1.1とSpringSecurity3.1.0を使用するWebアプリがあります。SessionDestroyedEvent(s)をチェックし、ユーザー名とその他のデータをログに記録する必要があるApplicationListenerを実装しました。ただし、getSecurityContexts()は常に空のコレクションを返します。LDAPサーバーに対して認証しています。getSource()メソッドもチェックしましたが、プリンシパル情報を保持するセッションデータが返されます。ただし、オブジェクトはコンテナ固有の実装であり、異なるため、使用できるインターフェイス/抽象クラスはありません。私の質問は、これがSpringSecurityのバグなのか、それとも追加の構成を行うことができるのかということです。
関連するコードは次のとおりです。
@Service
public class ApplicationSecurityListener implements ApplicationListener<ApplicationEvent>{
@Override
public void onApplicationEvent(ApplicationEvent event)
{
else if ( event instanceof SessionDestroyedEvent )
{
SessionDestroyedEvent sessinEvent = ( SessionDestroyedEvent ) event;
//System.out.println ( "SessionDestroyedEvent:" + sessinEvent.getId() );
//load session if it is not empty
if(sessinEvent.getSecurityContexts() != null && !sessinEvent.getSecurityContexts().isEmpty())
{
...
}}}}