<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 閱讀(433) 評論(0)  編輯  收藏 所屬分類: Spring個人學習日記
          主站蜘蛛池模板: 台东市| 梁河县| 海盐县| 高安市| 德钦县| 巍山| 浮山县| 孟州市| 井研县| 廉江市| 天门市| 新宁县| 洪湖市| 永嘉县| 洪泽县| 广灵县| 天柱县| 津市市| 呼玛县| 雷波县| 任丘市| 习水县| 台东市| 南平市| 红安县| 元阳县| 崇信县| 禄劝| 洛阳市| 海丰县| 巴里| 固始县| 武威市| 含山县| 德安县| 台州市| 长治县| 永昌县| 芷江| 柳州市| 清流县|