快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
//Step 4: Fetching a secure bean from the application  context PrivateCatalog privateCatalog =    (PrivateCatalog) applicationCtx.getBean ("privateCatalog"); //Step 5: Calling a method of the secure bean  String privateData = privateCatalog.getData();

下面将进一步讨论清单 4 中的步骤:

步骤 1:取回一个应用程序上下文实例

当应用程序希望访问 XML 配置文 件中配置的 Java bean 时,它必须取回您在 “使用 Spring 创建 Java 对象” 的步骤 4 中见到的 XMLWebApplicationContext 对象。 XMLWebApplicationContext 对象包含对 XML 配置文件配置的所有 Java beans 的引用。

步骤 2:从应用程序上下文中取回不安全的 bean

您现在具有一个对 XMLWebApplicationContext 对象的引用。XMLWebApplicationContext 类公开了 一个 getBean() 方法,它包含 bean 的名称并在数组中查找 “使用 Spring 创 建 Java 对象” 步骤 7 中准备的 bean。在本例中,该 bean 为 publicCatalog(未执行过代理),因此 XMLWebApplicationContext 将返回实 际的 bean。

步骤 3:调用不安全 bean 的方法

现在您可以调用步骤 2 中获得的 publicCatalog bean 的任何方法。例如,清单 4 显示的 getData() 方法调用 的执行没有应用任何访问控制并向应用程序返回类别数据。

步骤 4:从应用程序上下文取回安全 bean

安全 bean 与不安全 bean 的 取回方式类似,惟一区别是:当您通过调用 getBean() 方法尝试取回安全 bean 时,您将获得安全对象的代理而不是实际的对象。该代理就是我在 “Spring IOC 发挥效用” 步骤 4 中解释的由 Spring 框架创建的同一个对象。

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

时间:2011-09-07 ibm Bilal Siddiqui

步骤 5:调用安全 bean 的方法

当调用安全 bean 的方法时,您在 步骤 4 中获得的代理对象将一个方法调用请求分配给拦截器。拦截器将检查试图访问 方法的用户是否具有相应的访问权,从而处理方法调用请求。

您现在应该对 Spring 框架如何创建 Java 对象以及客户机应用程序如何与 之交互有了清晰的了解。了解了这些内容后,就更加容易理解并利用 Acegi 的 方法安全性拦截器,下一节将具体介绍该主题。

配置 Acegi 的方法安全性拦截器

只要应用程序试图访问由 Acegi 安全系统保护的 bean 方法,请求将被自动 传递到 Acegi 的方法安全性拦截器。方法安全性拦截器的作用就是控制对安全 Java bean 的方法的访问。拦截器使用 Acegi 的身份验证和授权框架确认用户 是否具有权利调用安全 Java bean 的方法,然后相应地作出响应。

清单 5 展示 Acegi 的方法安全性拦截器的示例配置:

清单 5. Acegi 的方法安全性拦截器的示例配置

<bean id="privateCatalogSecurityInterceptor"   class="org.acegisecurity.intercept.method.aopalliance.MethodSecurityIn terceptor">   <property name="authenticationManager">     <ref bean="authenticationManager"/>   </property>   <property name="accessDecisionManager">     <ref bean="accessDecisionManager"/>   </property>   <property name="objectDefinitionSource">    <value>     sample.PrivateCatalog.getData=ROLE_HEAD_OF_ENGINEERING      <!-- Roles required by other beans -->    </value>   </property> </bean>

清单 5 所示的拦截

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号