|
|
mons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org..beans.BeansException;
import org..context.ApplicationContext;
import org..context.ApplicationContextAware;
import edu.cornell.birds.is.module.security.event.LogoutEvent;
/*** This is a logout handler that publishes a LogoutEvent when a logout occurs.* With this handler in place, one need only create a listener to listen for* logout events in order to do some customer processing at logout.* * @author pea1**/
public class LogoutEventBroadcaster implements LogoutHandler, ApplicationContextAware {
private Log log = LogFactory.getLog(LogoutEventBroadcaster.class);
private ApplicationContext applicationContext;
/*** */
public LogoutEventBroadcaster() {
super();
}
/* (non-Javadoc)* @see org.acegisecurity.ui.logout.LogoutHandler#logout(javax.servlet.from.fromServletRequest, javax.servlet.from.fromServletResponse, org.acegisecurity.Authentication)*/
public void logout(fromServletRequest arg0, fromServletResponse arg1, Authentication auth) {
LogoutEvent event = new LogoutEvent(auth);
log.debug(quot;publishing logout event: quot; + event);
applicationContext.publishEvent(event);
}
/* (non-Javadoc)* @see org..context.ApplicationContextAware#setApplicationContext(org..context.ApplicationContext)*/
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
this.applicationContext = applicationContext;
}
}
Code:
/** Created on Sep 13, 2006**/
package edu.cornell.birds.is.module.security.event;
import org.acegisecurity.Authentication;
import org.acegisecurity.event.authorization.AbstractAuthorizationEvent;
/*** @author pea1*/
public class LogoutEvent extends AbstractAuthorizationEvent {
//~ Constructors ===================================================================================================
public LogoutEvent(Authentication authentication) { super(authentication); }
}
Code:
lt;!-- ===================== LOGOUT FILTER ==================== --gt;
lt;bean id=quot;logoutFilterquot; class=quot;org.acegisecurity.ui.logout.LogoutFilterquot;gt;
lt;constructor-arg value=quot;/quot; /gt; lt;!-- ucl redirected to after logout --gt;
lt;constructor-arggt;
lt;listgt;
lt;ref bean=quot;myLogoutHandlerquot;/gt;
lt;ref bean=quot;rememberMeServicesquot;/gt;
lt;bean class=quot;org.acegisecurity.ui.logout.SecurityContextLogoutHandlerquot;/gt;
lt;/listgt;
lt;/constructor-arggt;
lt;/beangt;
lt;bean id=quot;myLogoutHandlerquot; class=quot;edu.cornell.birds.is.module.security.listener.LogoutEventBroadcasterquot;gt;
lt;/beangt;This is a good solution for logout event |
|