<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)  編輯  收藏 所屬分類: 【開源技術】
    主站蜘蛛池模板: 国产一精品一AV一免费| 中文字幕高清免费不卡视频| 桃子视频在线观看高清免费视频| 国产亚洲一区二区三区在线不卡 | 亚洲色偷偷综合亚洲AV伊人| 成人免费视频88| 亚洲一区二区无码偷拍| 大地资源在线观看免费高清| 亚洲自偷自偷在线成人网站传媒| 亚洲中文无码永久免费| 亚洲日产乱码一二三区别| 日韩精品免费一区二区三区| 久久久久久久综合日本亚洲 | 免费一级毛suv好看的国产网站| 国产又黄又爽又猛的免费视频播放| 蜜芽亚洲av无码一区二区三区 | 国产成人亚洲午夜电影| 免费人妻av无码专区| 中文字幕在线免费视频| 久久亚洲AV午夜福利精品一区| 99热在线免费观看| 亚洲精品伊人久久久久| 国产又黄又爽又刺激的免费网址 | 亚洲电影免费观看| 国产99久久久久久免费看| 亚洲日韩中文字幕在线播放| 久久99精品免费视频| 亚洲国产乱码最新视频| 91福利视频免费| 亚洲码和欧洲码一码二码三码| 亚洲AV无码专区日韩| 亚洲熟妇无码AV不卡在线播放| 国产一级高清视频免费看| a级毛片免费全部播放无码| 亚洲欧洲自拍拍偷综合| 四虎影视永久免费观看网址| 可以免费观看的毛片| 亚洲乱理伦片在线观看中字| 亚洲精品国产品国语在线| 毛片免费在线观看网址| 一个人看的www免费在线视频|