<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ù)】
    主站蜘蛛池模板: 免费国产高清视频| 免费毛片在线播放| 亚洲韩国—中文字幕| 本道天堂成在人线av无码免费| 又爽又高潮的BB视频免费看| 在线91精品亚洲网站精品成人| 国产精品国产免费无码专区不卡| 亚洲日韩一中文字暮| 成人免费视频一区| 亚洲中文字幕无码久久| 日本特黄特黄刺激大片免费| 亚洲AV无码XXX麻豆艾秋| 免费一级毛片一级毛片aa| 免费无码一区二区| 国产精品亚洲аv无码播放| 久久青草91免费观看| 亚洲国产超清无码专区| 久久久久免费看黄A片APP| 亚洲AV无码专区亚洲AV桃| 亚洲精品成人久久久| 97无码人妻福利免费公开在线视频 | 亚洲国产精品13p| 久久九九久精品国产免费直播| 图图资源网亚洲综合网站| 99视频全部免费精品全部四虎| 亚洲AV日韩AV永久无码色欲| 精品亚洲视频在线观看| 99久久99热精品免费观看国产| 2020年亚洲天天爽天天噜| 国产无遮挡裸体免费视频| 中文字幕免费在线看线人动作大片 | 久久精品无码免费不卡| 亚洲欧洲在线播放| 国产成人综合久久精品免费| a级成人毛片免费图片| 精品久久久久久亚洲精品| 国产亚洲精品看片在线观看 | 四虎影院免费视频| 久久久久国色AV免费观看| 亚洲fuli在线观看| 亚洲国产精品无码AAA片|