麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

SpringAOP在DWR安全上的應用

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

     實現攔截功能的類有:


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


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


     三、AopContext,Aop上下文。在主攔截器調用IInteceptor的對象時,把這個上下文對象作為參數來調用子攔截器。從該上下文可獲得一系列信息,如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,用來保存數據罷了。


下面來看看配置文件:


 <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>
  <!--其中一個子攔截器的實現-->
  <bean id="test" class="net.jf.ajax.iterceptor.TestInterceptor"/>
</beans>




發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 激情在线免费观看 | 成人福利视频在线 | 国内精品一级毛片免费看 | 日韩a毛片免费观看 | 成人免费网视频 | 亚洲欧美日韩中文在线 | 国产精品视频成人 | 久久久看 | 久久综合久久精品 | 黄色电影免费提供 | 日本成人一二三区 | 亚洲视频精选 | 欧美电影在线观看 | 亚洲啪啪 | 男女污视频在线观看 | 在线成人免费视频 | 免费亚洲视频在线观看 | 看国产毛片 | 色视频一区二区 | 可以看毛片的网址 | 激情小说激情图片激情电影 | 一本到免费视频 | av电影在线网站 | 成人毛片免费看 | 免费看一级片 | 日本中文高清 | av日韩一区二区三区 | 国产分类视频 | 日本中文不卡视频 | 国产精品久久久不卡 | 免费在线观看成人av | 日本不卡中文字幕 | 国产在线观看一区二区三区 | 久久久精品网 | 亚洲最黄视频 | 中日韩免费视频 | xvideos korean| 麻豆一二区 | 国产精品久久久久久久久久久久久久久久 | 久草中文网 | 娇喘在线 |