WEB开发网
开发学院软件开发Java 使用 Acegi 保护 Java 应用程序,第 3 部分: 实现... 阅读

使用 Acegi 保护 Java 应用程序,第 3 部分: 实现对 Java 对象的访问控制

 2010-03-18 00:00:00 来源:WEB开发网   
核心提示: Cglib2AopProxy 类实现了两个名为 AOPProxy 和 MethodInterceptor 的接口,AOPProxy 接口由 Spring 框架提供,使用 Acegi 保护 Java 应用程序,第 3 部分: 实现对 Java 对象的访问控制(7),表示您希望进行代理的实际 bea

Cglib2AopProxy 类实现了两个名为 AOPProxy 和 MethodInterceptor 的接口。AOPProxy 接口由 Spring 框架提供,表示您希望进行代理的实际 bean,因此它与您的 bean 公开相同的方法。MethodInterceptor 接口也源于 AOP 框架,它包含的方法可以在用户试图访问您已执行代理的 bean 时接受控制权。这意味着 MethodInterceptor 接口处理来自用户的请求以访问执行过代理的 bean。由于 Cglib2AopProxy 类同时实现了 AOPProxy 和 MethodInterceptor 接口,因此它提供了完整的功能,既可以提供经过代理的 bean,也可以处理用户请求以访问代理 bean。

执行完前面的步骤后,您现在具有了所需的代理对象。因此 XMLWebApplicationContext 类将安全 bean 的代理(而不是实际的 bean)保存在 “使用 Spring 创建 Java 对象” 的步骤 7 中的同一个数组中。

访问执行过代理的 Java 对象

在前面的几节中,您了解了 Spring 如何创建公有 bean 和私有 bean。出于本文的目的,您可将公有 bean 视为使用代理保护的不安全的私有 bean。现在我们来看一下客户机应用程序为访问公有 bean 和私有 bean 而必须遵循的一系列步骤。

清单 3 展示了 publicCatalog 和 privateCatalog 两个 bean 的 XML 配置。publicCatalog bean 意味着公共访问,因此不需要使用 bean 代理。privateCatalog bean 意味着只能由指定用户访问,因此必须加以保护。我在清单 3 中包含了 privateCatalog bean 的 bean 代理配置:

清单 3. publicCatalog 和 privateCatalog bean 的 XML 配置

<beans> 
 <bean id="publicCatalog" class="sample.PublicCatalog"/> 
 <bean id="privateCatalog" class="sample.PrivateCatalog"/> 
 
 <!-- proxy configuration for privateCatalog bean --> 
 <bean id="proxyCreator" 
  class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator"> 
  <property name="beanNames"> 
   <list> 
    <value>privateCatalog</value> 
    <!--Names of other beans to be proxied --> 
   </list> 
  </property>   
  <property name="interceptorNames"> 
   <list> 
     <value>privateCatalogSecurityInterceptor</value> 
    </list> 
  </property> 
 </bean> 
<beans> 

上一页  2 3 4 5 6 7 8 9 10  下一页

Tags:使用 Acegi 保护

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接