<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 閱讀(434) 評論(0)  編輯  收藏 所屬分類: Spring個人學習日記
          主站蜘蛛池模板: 东城区| 偏关县| 玛曲县| 凤冈县| 怀柔区| 柯坪县| 绥德县| 邵东县| 蓬莱市| 罗甸县| 仙桃市| 余姚市| 酒泉市| 华安县| 白水县| 杭锦后旗| 徐州市| 山丹县| 佛山市| 石景山区| 永福县| 南江县| 天祝| 盐山县| 新乡市| 雷波县| 海原县| 琼中| 徐汇区| 余姚市| 弋阳县| 靖安县| 西华县| 汶上县| 邵阳县| 永年县| 宜良县| 元阳县| 鄄城县| 德惠市| 册亨县|