快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
制所需的代理对象。

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.BeanNameAutoProxyCr eator">    <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>

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

时间:2011-09-07 ibm Bilal Siddiqui

应用程序可以使用清单 4 中的代码访问清单 3 中配置的 publicCatalog 和 privateCatalog Java bean。注意,清单 4 中显示的 Java 代码可位于 JSP 页 面或位于服务器端 Java 应用程序的 bean 中。

清单 4. 访问安全和不安全 Java bean 的客户机应用程序代码

//Step 1: Fetching an instance of the application  context XMLWebApplicationContext applicationCtx =    WebApplicationContextUtils.getWebApplicationContext(      this.getServletConfig().getServletContext()); //Step 2: Fetching an insecure bean from the application  context PublicCatalog publicCatalog =    (PublicCatalog) applicationCtx.getBean ("publicCatalog"); //Step 3: Calling a method of the insecure bean  String publicData = publicCatalog.getData();

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号