<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    JAVA—咖啡館

    ——歡迎訪問rogerfan的博客,常來《JAVA——咖啡館》坐坐,喝杯濃香的咖啡,彼此探討一下JAVA技術(shù),交流工作經(jīng)驗,分享JAVA帶來的快樂!本網(wǎng)站部分轉(zhuǎn)載文章,如果有版權(quán)問題請與我聯(lián)系。

    BlogJava 首頁 新隨筆 聯(lián)系 聚合 管理
      447 Posts :: 145 Stories :: 368 Comments :: 0 Trackbacks

    spring security 2安全功能,添加用戶驗證碼的實現(xiàn),方案有3個:
    方案1、由于AuthenticationProcessingFilter過濾器是攔截/j_spring_security_check地址,他的實現(xiàn)類里只讀取的j_username和j_password,
    沒有讀取其他的用戶登陸信息,所以我就把驗證碼(code)在login.jsp頁面和j_username拼裝在一起,在UserDetailServiceImpl類UserDetails loadUserByUsername(String userName)
    方法里對傳進的userName進行拆分,分解出用戶名和驗證碼,剩下的工作不用我詳細說了。
    方案2、繼承AuthenticationProcessingFilter重寫一下AuthenticationProcessingFilter類的實現(xiàn)類,該方案的缺點是對現(xiàn)有的spring security 2配置改動較大;
    方案3(我推薦的),優(yōu)點自己體會。
    步驟1寫過濾器,代碼如下:
    package com.ss3ex.core.security.service;

    import java.io.IOException;

    import javax.servlet.Filter;
    import javax.servlet.FilterChain;
    import javax.servlet.FilterConfig;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
    import javax.servlet.http.Cookie;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;

    public class CodeFilter extends HttpServlet implements Filter {
    /**
    * 判斷用戶輸入的驗證碼是否正確
    */
    private static final long serialVersionUID = -5838154525730151323L;

    public void init(FilterConfig config) throws ServletException {
    }

    public void destroy() {
    }

    public void doFilter(ServletRequest servletRequest,
        ServletResponse servletResponse, FilterChain filterChain)
        throws IOException, ServletException {
       HttpServletRequest request = (HttpServletRequest) servletRequest;
       HttpServletResponse response = (HttpServletResponse) servletResponse;
       String code = request.getParameter("j_code");
       Cookie[] cookie = request.getCookies();
       String codes = "";
       for (int i = 0; cookie != null && i < cookie.length; i++) {
        if ("codes".equals(cookie[i].getName())) {
         codes = cookie[i].getValue();
        }
       }
       if (!"".equals(codes) && codes != null) {
        if (code.equalsIgnoreCase(codes)) {
         filterChain.doFilter(request, response);
        } else {
         response.sendRedirect("/login.jsp?error=5");
        }
       } else {
        response.sendRedirect("/login.jsp?error=5");
       }
    }
    }
    步驟2添加web.xml中的配置,代碼如下:
    <filter>
       <filter-name>CodeFilter</filter-name>
       <filter-class>com.ss3ex.core.security.service.CodeFilter</filter-class>
    </filter>
    <filter-mapping>
       <filter-name>CodeFilter</filter-name>
       <url-pattern>/j_spring_security_check</url-pattern>
    </filter-mapping>
    注意:放在<filter-name>springSecurityFilterChain</filter-name>的前面就可以了。

    posted on 2010-07-23 16:38 rogerfan 閱讀(1461) 評論(0)  編輯  收藏 所屬分類: 【開源技術(shù)】
    主站蜘蛛池模板: 国产精品永久免费10000| 成人男女网18免费视频| 亚洲国产品综合人成综合网站| 18国产精品白浆在线观看免费| 亚洲乱亚洲乱妇24p| 亚洲小说区图片区另类春色| 青娱乐免费视频在线观看| 青娱乐在线免费观看视频| 亚洲天堂中文字幕| 又大又硬又爽免费视频| 一区二区免费视频| 美女免费视频一区二区三区| 亚洲电影一区二区三区| 国产乱弄免费视频| 在线a免费观看最新网站| 曰批免费视频播放在线看片二 | 亚洲人成网亚洲欧洲无码久久| 日本人的色道免费网站| 免费在线观看自拍性爱视频| 亚洲第一页中文字幕| 国产亚洲日韩在线三区| 日韩精品视频免费在线观看| 日韩精品无码免费一区二区三区| 美女被免费视频网站a| 国产人成亚洲第一网站在线播放| 亚洲s色大片在线观看| 波多野结衣一区二区免费视频| 国产va免费精品观看精品| 男人都懂www深夜免费网站| 国产亚洲精品第一综合| 亚洲夂夂婷婷色拍WW47| 亚洲网址在线观看| 亚洲色婷婷六月亚洲婷婷6月| 国产成人3p视频免费观看| 一个人免费观看视频www| 免费无码一区二区三区| a毛片全部免费播放| 九九久久国产精品免费热6| 亚洲国产日韩a在线播放| 国产99在线|亚洲| 亚洲手机中文字幕|