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

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

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

    JAVA—咖啡館

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

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

    spring security 2安全功能,添加用戶驗證碼的實現,方案有3個:
    方案1、由于AuthenticationProcessingFilter過濾器是攔截/j_spring_security_check地址,他的實現類里只讀取的j_username和j_password,
    沒有讀取其他的用戶登陸信息,所以我就把驗證碼(code)在login.jsp頁面和j_username拼裝在一起,在UserDetailServiceImpl類UserDetails loadUserByUsername(String userName)
    方法里對傳進的userName進行拆分,分解出用戶名和驗證碼,剩下的工作不用我詳細說了。
    方案2、繼承AuthenticationProcessingFilter重寫一下AuthenticationProcessingFilter類的實現類,該方案的缺點是對現有的spring security 2配置改動較大;
    方案3(我推薦的),優點自己體會。
    步驟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 閱讀(1466) 評論(0)  編輯  收藏 所屬分類: 【開源技術】
    主站蜘蛛池模板: 久久九九久精品国产免费直播 | 亚洲天堂视频在线观看| 亚洲美女激情视频| 国产天堂亚洲精品| 久久久高清日本道免费观看| 日韩视频免费一区二区三区| 久久99国产亚洲高清观看首页| 亚洲熟妇无码AV| 日本免费一区二区久久人人澡| 亚洲AV无码专区亚洲AV伊甸园| 亚洲欧美自偷自拍另类视| 无码国产精品一区二区免费式芒果| 国产小视频免费观看| 亚洲人成免费网站| A片在线免费观看| 免费a级毛片大学生免费观看| 亚洲人成网站看在线播放| 曰批全过程免费视频在线观看无码| 亚洲精品高清国产一线久久| 朝桐光亚洲专区在线中文字幕 | 最好免费观看高清在线| 亚洲AV综合色一区二区三区| 午夜视频免费在线观看| 亚洲成人免费电影| 中文字幕无码日韩专区免费| 久久丫精品国产亚洲av不卡| 两性色午夜视频免费播放| 免费在线观看中文字幕| 一区二区在线免费视频| 亚洲国产婷婷综合在线精品| 亚洲色大18成人网站WWW在线播放| 在线观看亚洲免费| 日本一区午夜艳熟免费| 亚洲av永久无码精品天堂久久| 24小时日本韩国高清免费| 亚洲AV日韩AV永久无码久久| 你懂得的在线观看免费视频| 亚洲中文字幕久久精品无码喷水 | 亚洲欧洲无码AV电影在线观看| 免费国产草莓视频在线观看黄| 日韩伦理片电影在线免费观看|