<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個人學習日記
          主站蜘蛛池模板: 英德市| 阿拉尔市| 漳浦县| 江安县| 嘉义县| 沾化县| 靖远县| 新源县| 正安县| 南雄市| 武宣县| 三亚市| 会同县| 临安市| 朝阳区| 德昌县| 景德镇市| 丹阳市| 历史| 富顺县| 营口市| 乐昌市| 平潭县| 甘孜县| 麻阳| 集安市| 铜川市| 平谷区| 靖宇县| 台山市| 达日县| 武邑县| 封丘县| 高密市| 梓潼县| 六枝特区| 油尖旺区| 比如县| 黔江区| 建阳市| 行唐县|