空間站

          北極心空

            BlogJava :: 首頁(yè) :: 聯(lián)系 :: 聚合  :: 管理
            15 Posts :: 393 Stories :: 160 Comments :: 0 Trackbacks

          acegi的登陸過(guò)程

          先來(lái)無(wú)事看看acegi的登陸過(guò)濾器 寫下來(lái)當(dāng)作備忘吧
          主要的類是AuthenticationProcessingFilter 繼承了AbstractProcessingFilter 這要的邏輯都在后面這個(gè)類中
          讓我們看看核心代碼吧
          Java代碼 復(fù)制代碼
          1. public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException,   
          2.         ServletException {   
          3.     if (!(request instanceof HttpServletRequest)) {   
          4.         throw new ServletException("Can only process HttpServletRequest");   
          5.     }   
          6.   
          7.     if (!(response instanceof HttpServletResponse)) {   
          8.         throw new ServletException("Can only process HttpServletResponse");   
          9.     }   
          10.   
          11.     HttpServletRequest httpRequest = (HttpServletRequest) request;   
          12.     HttpServletResponse httpResponse = (HttpServletResponse) response;   
          13.   
          14.     if (requiresAuthentication(httpRequest, httpResponse)) {   
          15.         if (logger.isDebugEnabled()) {   
          16.             logger.debug("Request is to process authentication");   
          17.         }   
          18.   
          19.         Authentication authResult;   
          20. /下面才是重點(diǎn) 上面都是些基本檢查   
          21.         try {   
          22.             onPreAuthentication(httpRequest, httpResponse);   
          23.             authResult = attemptAuthentication(httpRequest);//這個(gè)方法就是去登陸了 就是調(diào)用dao檢查用戶名密碼 登陸不成功將拋出異常   
          24.         }   
          25.         catch (AuthenticationException failed) {   
          26.             // Authentication failed   
          27.             unsuccessfulAuthentication(httpRequest, httpResponse, failed);   
          28.   
          29.             return;   
          30.         }   
          31.   
          32.         // Authentication success   
          33.         if (continueChainBeforeSuccessfulAuthentication) {   
          34.             chain.doFilter(request, response);   
          35.         }   
          36.   
          37.         successfulAuthentication(httpRequest, httpResponse, authResult);   
          38.   
          39.         return;   
          40.     }   
          41.   
          42.     chain.doFilter(request, response);   
          43. }  


          看一些登陸成功后 做些什么
          Java代碼 復(fù)制代碼
          1.     protected void successfulAuthentication(HttpServletRequest request, HttpServletResponse response,   
          2.             Authentication authResult) throws IOException {   
          3.         if (logger.isDebugEnabled()) {   
          4.             logger.debug("Authentication success: " + authResult.toString());   
          5.         }   
          6.   
          7. //把用戶信息保存到SecurityContextHolder中1980   
          8. SecurityContextHolder.getContext().setAuthentication(authResult);   
          9.   
          10.         if (logger.isDebugEnabled()) {   
          11.             logger.debug("Updated SecurityContextHolder to contain the following Authentication: '" + authResult + "'");   
          12.         }   
          13. //轉(zhuǎn)到目標(biāo)頁(yè)面 即登陸成功頁(yè)面   
          14.         String targetUrl = determineTargetUrl(request);   
          15.   
          16.         if (logger.isDebugEnabled()) {   
          17.             logger.debug("Redirecting to target URL from HTTP Session (or default): " + targetUrl);   
          18.         }   
          19.   
          20.         onSuccessfulAuthentication(request, response, authResult);   
          21.   
          22.         rememberMeServices.loginSuccess(request, response, authResult);   
          23.   
          24.         // Fire event   
          25.         if (this.eventPublisher != null) {   
          26.             eventPublisher.publishEvent(new InteractiveAuthenticationSuccessEvent(authResult, this.getClass()));   
          27.         }   
          28.   
          29.         sendRedirect(request, response, targetUrl);   
          30.     }  
          posted on 2008-06-19 10:36 蘆葦 閱讀(875) 評(píng)論(0)  編輯  收藏 所屬分類: SpringJAVA
          主站蜘蛛池模板: 临沂市| 金川县| 三都| 彰化县| 白银市| 莱芜市| 罗平县| 宁陕县| 博爱县| 兴山县| 阳江市| 广平县| 辽宁省| 盐源县| 乌鲁木齐市| 卫辉市| 舟山市| 涿鹿县| 原平市| 伊春市| 高阳县| 六盘水市| 增城市| 泰来县| 聂荣县| 岳阳市| 太仓市| 加查县| 弋阳县| 恭城| 登封市| 呼图壁县| 临邑县| 府谷县| 承德县| 本溪市| 嘉善县| 凤阳县| 泰州市| 民县| 江阴市|