先来无事看看acegi的登陆过滤器 写下来当作备忘吧 
主要的类是AuthenticationProcessingFilter 继承了AbstractProcessingFilter 这要的逻辑都在后面这个类中 
让我们看看核心代码吧 
    - public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException,   
-         ServletException {   
-     if (!(request instanceof HttpServletRequest)) {   
-         throw new ServletException("Can only process HttpServletRequest");   
-     }   
-   
-     if (!(response instanceof HttpServletResponse)) {   
-         throw new ServletException("Can only process HttpServletResponse");   
-     }   
-   
-     HttpServletRequest httpRequest = (HttpServletRequest) request;   
-     HttpServletResponse httpResponse = (HttpServletResponse) response;   
-   
-     if (requiresAuthentication(httpRequest, httpResponse)) {   
-         if (logger.isDebugEnabled()) {   
-             logger.debug("Request is to process authentication");   
-         }   
-   
-         Authentication authResult;   
- /下面才是重点 上面都是些基本检查   
-         try {   
-             onPreAuthentication(httpRequest, httpResponse);   
-             authResult = attemptAuthentication(httpRequest);  
-         }   
-         catch (AuthenticationException failed) {   
-               
-             unsuccessfulAuthentication(httpRequest, httpResponse, failed);   
-   
-             return;   
-         }   
-   
-           
-         if (continueChainBeforeSuccessfulAuthentication) {   
-             chain.doFilter(request, response);   
-         }   
-   
-         successfulAuthentication(httpRequest, httpResponse, authResult);   
-   
-         return;   
-     }   
-   
-     chain.doFilter(request, response);   
- }  
 
	public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException,
ServletException {
if (!(request instanceof HttpServletRequest)) {
throw new ServletException("Can only process HttpServletRequest");
}
if (!(response instanceof HttpServletResponse)) {
throw new ServletException("Can only process HttpServletResponse");
}
HttpServletRequest httpRequest = (HttpServletRequest) request;
HttpServletResponse httpResponse = (HttpServletResponse) response;
if (requiresAuthentication(httpRequest, httpResponse)) {
if (logger.isDebugEnabled()) {
logger.debug("Request is to process authentication");
}
Authentication authResult;
//下面才是重点 上面都是些基本检查
try {
onPreAuthentication(httpRequest, httpResponse);
authResult = attemptAuthentication(httpRequest);//这个方法就是去登陆了 就是调用dao检查用户名密码 登陆不成功将抛出异常
}
catch (AuthenticationException failed) {
// Authentication failed
unsuccessfulAuthentication(httpRequest, httpResponse, failed);
return;
}
// Authentication success
if (continueChainBeforeSuccessfulAuthentication) {
chain.doFilter(request, response);
}
successfulAuthentication(httpRequest, httpResponse, authResult);
return;
}
chain.doFilter(request, response);
}
看一些登陆成功后 做些什么 
    -     protected void successfulAuthentication(HttpServletRequest request, HttpServletResponse response,   
-             Authentication authResult) throws IOException {   
-         if (logger.isDebugEnabled()) {   
-             logger.debug("Authentication success: " + authResult.toString());   
-         }   
-   
-   
- SecurityContextHolder.getContext().setAuthentication(authResult);   
-   
-         if (logger.isDebugEnabled()) {   
-             logger.debug("Updated SecurityContextHolder to contain the following Authentication: '" + authResult + "'");   
-         }   
-   
-         String targetUrl = determineTargetUrl(request);   
-   
-         if (logger.isDebugEnabled()) {   
-             logger.debug("Redirecting to target URL from HTTP Session (or default): " + targetUrl);   
-         }   
-   
-         onSuccessfulAuthentication(request, response, authResult);   
-   
-         rememberMeServices.loginSuccess(request, response, authResult);   
-   
-           
-         if (this.eventPublisher != null) {   
-             eventPublisher.publishEvent(new InteractiveAuthenticationSuccessEvent(authResult, this.getClass()));   
-         }   
-   
-         sendRedirect(request, response, targetUrl);   
-     }