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

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

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

    像一顆晨土

    常用鏈接

    統(tǒng)計

    blogs

    life

    最新評論

    Spring AOP 在DWR安全上的應用

    上一篇文章里提到了可以讓 DWR自動往Service里面注入一個與Servlet相關的對象,作為參數(shù)。只是這樣,要每個Service都加上這樣的一個參數(shù),奇丑無比!想了 想,決定就讓DWR污染一下,Service保留原樣。只是增加一個MethodBeforeAdvice(正是它讓DWR的API污染了一下。),來對 Service的方法進行攔截,可以在Service的調用之前對操作進行所謂的身份驗證,授權之類的操作。完整的攔截模塊幾個類文件加個Spring配 置文件搞定。

         實現(xiàn)攔截功能的類有:

        一、MainInteceptor,主攔截器,所以DWR的遠程調用都會被攔截,當然, 調用是細到方法級的,可配置的,該類實現(xiàn)了Spring AOP的MethodBeforeAdvice接口,該類有一個集合成員變量,成員為IInteceptor。

        二、IInteceptor,是一個接口,僅有一個execute(AopContext context)函數(shù)。該接口是攔截器(與前面的主攔截器不同,本接口定義的攔截器是可以由用戶去實現(xiàn),并且可以有多個)。實現(xiàn)接口只需要實現(xiàn)方法。這些 攔截器會被主攔截器回調。 比如要實現(xiàn)一個身份驗證的攔截,SecuityInteceptor,在配置文件中把這個攔截器設置為主攔截器的屬性即可獲得回調。

         三、AopContext,Aop上下文。在主攔截器調用IInteceptor的對象時,把這個上下文對象作為參數(shù)來調用子攔截器。從該上下文可獲得一系列信息,如HttpSession,HttpRequest等。甚至你可以自已設置屬性。 

          下面看一些代碼片斷:
    MainInteceptor:

     private List<IInterceptor> interceptors;//定義一系列的子攔截器

    public void setInterceptors(List<IInterceptor> interceptors) {
            this.interceptors = interceptors;
        }

    在before(Method method, Object[] params, Object target)方法里:

            WebContext ctx = WebContextFactory.get();//唯一被DWR污染的地方
            HttpSession session = ctx.getSession();
            AopContext context = new AopContext();        context.setSession(session);
            for(Iterator it = interceptors.iterator(); it.hasNext();){
                IInterceptor interceptor = (IInterceptor) it.next();
                interceptor.execute(context);
            }

     IInterceptor:

     public interface IInterceptor {
        public void execute(AopContext context);
    }

    AopContext就不必貼出來了, 隨自已定義些什么屬性,不過就內置了一個Map,用來保存數(shù)據罷了。

    下面來看看配置文件:

     <beans>

        <!--將要暴露給DWR的Service-->
         <bean id="bookManager" class="org.springframework.aop.framework.ProxyFactoryBean">
        <property name="proxyInterfaces">
          <value>net.jf.ajax.business.BookManager</value>
        </property>
        <property name="target">
          <ref local="bookManagerImpl"/>
        </property>
        <property name="interceptorNames">
          <list>
            <value>dwrAdvisor</value>
          </list>
        </property>
      </bean>

      <bean id="bookManagerImpl" class="net.jf.ajax.business.impl.BookManagerImpl"/>
    <!--裝配器?如果看不懂,先看看Spring的Aop吧 :P-->
      <bean id="dwrAdvisor" class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">
        <property name="advice">
          <ref local="dwrInterceptor"/>
        </property>
        <property name="patterns">
            <list>
                <value>.*.*</value>
              </list>
        </property>
      </bean>


    <!--主攔截器,給它設置子攔截器-->
      <bean id="dwrInterceptor" class="net.jf.ajax.iterceptor.MainInterceptor">
          <property name="interceptors">
              <list>
                  <ref bean="test"/>
              </list>
          </property>
      </bean>
      <!--其中一個子攔截器的實現(xiàn)-->
      <bean id="test" class="net.jf.ajax.iterceptor.TestInterceptor"/>
    </beans>

    就 這樣,在配置DWR的配置文件時,配置<creator>時使用Spring的Creator就可以直接使用上面的Service了。當 DWR遠程請求時,在配置范圍內的方法的調用都會被主攔截器攔截,并且遍歷、執(zhí)行所有子攔截器。原有的Service不需要改動,只需要多加一個 Spring的配置文件,將原有的Service再加一層Aop的輕紗。

    這是一種實現(xiàn)方法。如果有別的方法讓DWR更安全、有效,請一定告知。:)

    posted on 2006-05-24 00:26 艾塵 閱讀(2253) 評論(0)  編輯  收藏 所屬分類: ajax


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


    網站導航:
     
    主站蜘蛛池模板: 亚洲中文字幕无码一区| 亚洲狠狠综合久久| 好紧我太爽了视频免费国产| 亚洲视频欧洲视频| 免费v片视频在线观看视频| 99久久99这里只有免费的精品| 亚洲综合精品香蕉久久网97| 日韩免费视频一区| 免费毛片a线观看| 亚洲AV噜噜一区二区三区| eeuss免费天堂影院| 久久综合亚洲色HEZYO社区| 免费欧洲美女牲交视频| 久99久精品免费视频热77| 亚洲国产成人久久综合| 久久亚洲精品成人777大小说| 国产免费久久久久久无码| 亚洲一区在线视频观看| 国产日韩成人亚洲丁香婷婷| 色窝窝免费一区二区三区| 中文字幕成人免费高清在线 | 全黄a免费一级毛片人人爱| 性xxxxx大片免费视频| 高潮毛片无遮挡高清免费| 亚洲精品456在线播放| 国产gv天堂亚洲国产gv刚刚碰| 一个人免费观看视频www| 国产免费一区二区三区不卡| 久久久久亚洲AV无码去区首| 亚洲精品动漫在线| 在线亚洲午夜理论AV大片| 国产精品国产午夜免费福利看 | 黄床大片免费30分钟国产精品| 麻豆狠色伊人亚洲综合网站 | 亚洲中文字幕无码久久| 亚洲AV永久无码精品| 亚洲AV成人精品日韩一区18p| 最近中文字幕mv免费高清视频7| 最近免费中文字幕大全高清大全1 最近免费中文字幕mv在线电影 | 国产福利免费视频| 日韩在线观看免费|