知识大全 Spring AOP在DWR安全上的应用

Posted

篇首语:书籍是屹立在时间的汪洋大海中的灯塔本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Spring AOP在DWR安全上的应用相关的知识,希望对你有一定的参考价值。

Spring AOP在DWR安全上的应用  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

     在上一篇文章里提到了可以让 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 = erator(); 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= 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= springframework aop support RegexpMethodPointcutAdvisor >    <property name= advice >      <ref local= dwrInterceptor />    </property>    <property name= patterns >        <list>            <value> * *</value>          </list>    </property>  </bean>

  <! 主拦截器 给它设置子拦截器 >  <bean id= dwrInterceptor class= erceptor MainInterceptor >      <property name= interceptors >          <list>              <ref bean= test />          </list>      </property>  </bean>  <! 其中一个子拦截器的实现 >  <bean id= test class= erceptor TestInterceptor /></beans>

  就 这样 在配置DWR的配置文件时 配置<creator>时使用Spring的Creator就可以直接使用上面的Service了 当 DWR远程请求时 在配置范围内的方法的调用都会被主拦截器拦截 并且遍历 执行所有子拦截器 原有的Service不需要改动 只需要多加一个 Spring的配置文件 将原有的Service再加一层Aop的轻纱

cha138/Article/program/Java/ky/201311/28021

相关参考

知识大全 对spring的aop理解

   问题   问题想要添加日志记录性能监控安全监测   最初解决方案   最初

知识大全 通过注解简化spring aop织入点的指定

   大型Javaweb应用往往有很大的系统访问量为了保护服务器免于出现过载的情况一般都需要对流量进行控制对于web页面的访问一般通过配置服务器或者apache可以起到保

知识大全 Spring AOP 详解

SpringAOP详解  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  此前对于AOP的使用仅限于

知识大全 浅析Spring.net中的Aop使用

浅析Spring.net中的Aop使用  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &

知识大全 Spring事务处理及其AOP框架的内幕

Spring事务处理及其AOP框架的内幕  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  ***注

知识大全 开源技术分析:AOP和Spring事务处理

开源技术分析:AOP和Spring事务处理  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一为什

知识大全 Spring3.0中的AOP配置方法

Spring3.0中的AOP配置方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  第一种配置方

知识大全 spring aop中单独代理和自动代理的设置

  spring的aop机制提供两类方式实现类代理一种是单个代理一种是自动代理  单个代理通过ProxyFactoryBean来实现自动代理通过BeanNameAutoProxyCreator或者De

知识大全 Spring AOP的一些概念

SpringAOP的一些概念  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  切面(Aspect)

知识大全 用Spring AOP实现开发中松散耦合

用SpringAOP实现开发中松散耦合  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!引言  AOP