<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 閱讀(1461) 評論(0)  編輯  收藏 所屬分類: 【開源技術】
    主站蜘蛛池模板: 亚洲精品在线免费观看| 91嫩草免费国产永久入口| 亚洲乱人伦中文字幕无码| 亚洲国产精品lv| 国产AⅤ无码专区亚洲AV| 日本高清免费不卡在线| 免费精品国偷自产在线在线| 一区二区在线免费观看| 久久精品成人免费国产片小草| 亚洲色欲一区二区三区在线观看| 在线观看www日本免费网站| 中文无码日韩欧免费视频| 无遮挡国产高潮视频免费观看| 日韩亚洲国产高清免费视频| 亚洲沟沟美女亚洲沟沟| 亚洲电影一区二区| 亚洲爆乳无码一区二区三区| 国产亚洲精品看片在线观看| 亚洲片国产一区一级在线观看| 国产成人精品男人免费| 国产精品美女自在线观看免费 | 一个人免费高清在线观看| 一区二区三区四区免费视频 | 免费91麻豆精品国产自产在线观看| 国产精品手机在线亚洲| 性色av极品无码专区亚洲| 亚洲精品日韩一区二区小说| 亚洲中文字幕精品久久| 亚洲人成网站色7799| 亚洲爆乳成av人在线视菜奈实| 亚洲综合中文字幕无线码| 亚洲综合色婷婷在线观看| 在线观看亚洲AV每日更新无码| 精品亚洲AV无码一区二区| 亚洲综合精品伊人久久| 亚洲国产精品ⅴa在线观看| 日本系列1页亚洲系列| 一个人晚上在线观看的免费视频| 免费的黄色的网站| 国产成人无码精品久久久久免费 | 成人免费视频软件网站|