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

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

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

    spring security引發(fā)的若干思考

    兩個項目中都使用了spring security安全框架,很多資料都是介紹spring security具體使用。今天我如果還是寫這些東西就顯得多余了,那么我從不同的角度來總結(jié)自己對這個框架的一些認識。

    首先看看兩個疑惑,然后我會逐步解釋這兩個疑惑。

    第一個疑惑,spring security框架是spring的子框架,我就非常好奇spring security和spring是如何融合起來,確切的說,spring security定義的對象如何納入spring ioc 容器中管理。研究到最后其實都是spring自身的一些知識,比如:自定義擴展xml schema,spring ioc啟動。

    第二個疑惑,spring security如何攔截用戶的請求。這部分可以解讀spring security源碼可以得到答案。

    徹底搞明白第一個疑惑之后,也許你以后自己寫一個框架,就可以很方便的整合到spring中去了。對于框架開發(fā)工程師來說,開發(fā)新的框架之后能整合spring是必須的事情了,畢竟spring給我們所帶來的好處是可想而知的。這也是我要徹底了解清楚原理的動力所在。廢話一堆,進入主題吧~~~~

    第一個疑惑最后涉及到兩個方面的知識,spring ioc啟動和spring可擴展xml schema。spring ioc有兩個非常重要的概念,beanfactory和applicationContext,后者提供了更多更強的功能。為了避免過多的細節(jié)直接解讀beanfactory的讀取過程,xmlbeanfactory讀取xml文件會經(jīng)歷如下兩個過程:1、通過resource接口讀取xml文件,轉(zhuǎn)換成document。 2、從document中解析出bean的配置。具體詳細過程請參照文章:spring讀取xml配置源代碼分析(這篇文章一定要先看懂,不然后面很難繼續(xù))。看過我介紹大家看的那篇文章之后,其實也有所了解spring擴展xml schema機制了。如果還不是很清楚再結(jié)合這篇文章:基于Spring可擴展Schema提供自定義配置支持。感覺有點東拼西湊的,呵呵,主要怕以后自己忘記了,所以才寫篇blog。

    第二個疑惑我們就看源代碼吧。
    <filter-mapping>
       
    <filter-name>jcaptchaFilter</filter-name>
       
    <url-pattern>/j_spring_security_check</url-pattern>
    </filter-mapping>
        
    <filter>
       
    <filter-name>springSecurityFilterChain</filter-name>
       
    <filter-class>com.busyCity.web.filter.DelegatingFilterProxy</filter-class>
    </filter>
    <filter-mapping>
       
    <filter-name>springSecurityFilterChain</filter-name>
       
    <url-pattern>/*</url-pattern>
        <dispatcher>FORWARD</dispatcher>  
        <dispatcher>REQUEST</dispatcher>
    </filter-mapping>
    web.xml中配置了DelegatingFilterProxyDelegatingFilterProxy調(diào)用FilterChainProxy的doFilter
          public void doFilter(ServletRequest request, ServletResponse response)throws IOException, ServletException
          {
              
    if(currentPosition == additionalFilters.size())
               {
                    
    if(FilterChainProxy.logger.isDebugEnabled())
                        FilterChainProxy.logger.debug((
    new StringBuilder()).append(fi.getRequestUrl()).append(" reached end of additional filter chain; proceeding with original chain").toString());
                    fi.getChain().doFilter(request, response);
                } 
    else
                {
                    currentPosition
    ++;
                    Filter nextFilter 
    = (Filter)additionalFilters.get(currentPosition - 1);
                    
    if(FilterChainProxy.logger.isDebugEnabled())
                        FilterChainProxy.logger.debug((
    new StringBuilder()).append(fi.getRequestUrl()).append(" at position ").append(currentPosition).append(" of ").append(additionalFilters.size()).append(" in additional filter chain; firing Filter: '").append(nextFilter).append("'").toString());
                    nextFilter.doFilter(request, response, 
    this);
                }
            }
    這個方法就是循環(huán)調(diào)用我們用http命名空間配置的那些過濾器。然后根據(jù)不同的過濾器處理不同的內(nèi)容。


    我描述的都很簡單,主要原因是做個記錄,以后忘記了可以根據(jù)這個思路重新找到答案。不需要重新開始研究。呵呵。

    posted on 2010-10-08 16:05 yangpingyu 閱讀(740) 評論(0)  編輯  收藏 所屬分類: java框架編程


    只有注冊用戶登錄后才能發(fā)表評論。


    網(wǎng)站導(dǎo)航:
     
    <2010年10月>
    262728293012
    3456789
    10111213141516
    17181920212223
    24252627282930
    31123456

    導(dǎo)航

    統(tǒng)計

    常用鏈接

    留言簿

    隨筆分類

    隨筆檔案

    收藏夾

    linux

    產(chǎn)品交互

    分析,設(shè)計,架構(gòu)

    安全

    技術(shù)牛人

    數(shù)據(jù)庫

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 亚洲视频在线精品| 亚洲国产成人精品无码久久久久久综合| 久久亚洲AV无码西西人体| 精品久久久久久亚洲综合网| 成年男女免费视频网站| 久久夜色精品国产噜噜亚洲a| 五月婷婷综合免费| 国产成+人+综合+亚洲专| 性做久久久久久免费观看| 亚洲人成www在线播放| 日本a级片免费看| 99国产精品视频免费观看| 亚洲bt加勒比一区二区| 亚洲人成色在线观看| 可以免费观看的国产视频| 亚洲А∨精品天堂在线| 日韩大片免费观看视频播放| 亚洲国产成人精品无码久久久久久综合 | 亚洲精品91在线| 成人免费毛片内射美女APP| 亚洲成a人无码亚洲成av无码| 又黄又爽一线毛片免费观看| caoporn国产精品免费| 亚洲成AV人片在线观看无码| 四虎影视久久久免费| 国产∨亚洲V天堂无码久久久| 99久久免费看国产精品| 亚洲日韩国产一区二区三区在线 | 黄色a级片免费看| 亚洲AV无码成人网站久久精品大 | 中文字幕免费在线看线人动作大片| 亚洲VA成无码人在线观看天堂| 91热成人精品国产免费| 亚洲AV无码国产一区二区三区| 亚洲日韩中文字幕日韩在线| 亚在线观看免费视频入口| 亚洲综合无码一区二区痴汉| 国产成人亚洲综合无码| 日韩国产免费一区二区三区| 国产精品成人啪精品视频免费| 亚洲综合图片小说区热久久|