<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 閱讀(437) 評論(0)  編輯  收藏 所屬分類: Spring個人學習日記
          主站蜘蛛池模板: 封丘县| 通许县| 华宁县| 准格尔旗| 昌乐县| 凉城县| 监利县| 东海县| 黔西| 武邑县| 湘潭市| 儋州市| 渝北区| 营山县| 色达县| 禹城市| 嘉善县| 建昌县| 杂多县| 三亚市| 黎川县| 石河子市| 海晏县| 汶上县| 页游| 兴仁县| 长子县| 临桂县| 隆林| 章丘市| 红河县| 滦南县| 大丰市| 开封县| 隆子县| 门头沟区| 淄博市| 衡东县| 津市市| 大同县| 娄烦县|