我有一个使用 Spring 3.1.1 和 Spring Security 3.1.0 的 Web 应用程序。我实现了一个 ApplicationListener,它检查 SessionDestroyedEvent(s) 并记录用户名和其他数据。但是,getSecurityContexts() 总是返回一个空集合。我正在针对 LDAP 服务器进行身份验证。我还检查了 getSource() 方法,它返回包含 Principal 信息的会话数据。但是,这些对象是不同的容器特定实现,并且没有我可以使用的接口/抽象类。我的问题是这是否是 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())
{
...
}}}}