<bean id="authenticationProcessingFilter"
        class="com.pixel.hibernate.HomeAloneAuthenticationProcessingFilter">
        <property name="authenticationManager">
            <ref bean="authenticationManager" />
        </property>
        <property name="authenticationFailureUrl">
            <value>/back/login.jsp?login_error=1</value>
        </property>
        <property name="defaultTargetUrl">
            <value>/</value>
        </property>
        <property name="filterProcessesUrl">
            <value>/j_acegi_security_check</value>
        </property>
        <property name="exceptionMappings">
    <props>
     <prop key="com.eshore.util.ValidaAuthenticationException">
      /back/login.jsp?login_error=1
     </prop>
    </props>
   </property>
    </bean>



package com.pixel.hibernate;

import java.io.IOException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.acegisecurity.Authentication;
import org.acegisecurity.AuthenticationException;
import org.acegisecurity.ui.webapp.AuthenticationProcessingFilter;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;


public class HomeAloneAuthenticationProcessingFilter extends
   AuthenticationProcessingFilter {
private static final Log logger = LogFactory
    .getLog(HomeAloneAuthenticationProcessingFilter.class);

@Override
protected void onSuccessfulAuthentication(
    HttpServletRequest arg0, HttpServletResponse arg1,
    Authentication arg2) throws IOException {
   logger.info("login successful:"
     + arg0.getParameter("j_username"));
   arg0.getSession().setAttribute("userName",
     arg0.getParameter("j_username"));
   super.onSuccessfulAuthentication(arg0, arg1, arg2);
}

@Override
protected void onPreAuthentication(HttpServletRequest arg0,
    HttpServletResponse arg1) throws AuthenticationException,
    IOException {
   // 验证码验证
   String randomCode1 = (String) arg0.getSession().getAttribute(
     "rand");
   String randomCode2 = (String) arg0.getParameter("rand");
   if (!randomCode2.equals(randomCode1)) {
    throw new ValidaAuthenticationException(
      "valida code error");
   }
   super.onPreAuthentication(arg0, arg1);
}
}

class ValidaAuthenticationException extends AuthenticationException {
/**
*
*/
private static final long serialVersionUID = -8369047599309913998L;

public ValidaAuthenticationException(String arg0) {
   super(arg0);
}
}


posted on 2008-07-28 12:11 lzj520 阅读(382) 评论(0)  编辑  收藏 所属分类: Spring个人学习日记

只有注册用户登录后才能发表评论。


网站导航: