快速业务通道

使用Acegi保护Java应用程序,第5部分: 保护JSF应用程序中的JavaBean - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
件。

图 1. JSF 和 Acegi 组件协作

图 1 所示的事件顺序如下:

使用Acegi保护Java应用程序,第5部分: 保护JSF应用程序中的JavaBean(6)

时间:2011-09-07 ibm Bilal Siddiqui

用户访问 JSF 页面。

Acegi 检查该用户是否有权访问该 JSF 页面。(请参阅 第 4 部分 的 “处 理对受 Acegi 保护的 JSF 页面的请求” 一节。)

如果授权过程成功,则将控制权转到 faces servlet,由它准备提供 JSF 页 面。

在准备期间,JSF 找到 清单 2 所示的 JSF 页面中的 catalog bean。

JSF 检查 清单 3 所示的配置文件,查找 catalog bean 的定义并将其实例 化。JSF 还在配置文件中检查 catalog bean 的属性。它发现 catalog bean 的 publicData 和 privateData 属性被映射到 publicCatalog 和 privateCatalog bean,清单 3 中未将这两个 bean 配置为 JSF 托管 bean。

JSF 使用 Spring 的 DelegatingVariableResolver 变量解析器(在 清单 4 中配置)解析 publicCatalog 和 privateCatalog bean。

JSF 使用 Acegi 调用 publicCatalog 和 privateCatalog beans 的 getter 方法获取公共和私有数据。

Acegi 再次执行对访问 bean 的授权过程。(请参阅 第 3 部分 对 Java 对 象进行这一授权过程的详细讨论。)

如果 Acegi 发现用户得到授权可以访问 bean,就会调用 getter 方法,获 取公共和私有数据,并将数据提供给 JSF。

JSF 调用 catalog bean 的 setter 方法在 catalog bean 中设置公共和私 有数据。

JSF 执行其生命周期并提供 JSF 页面。

具有安全托管 bean 的 JSF-Acegi 示例应用程序

本文附带了一个名为 JSFAcegiSampleWithSecureManagedBeans 的示例应用 程序(请参阅 下载)。它使用前面两节介绍的技术保护对 JSF 托管 bean 内包 装的数据的访问。

要部署示例应用程序,请执行 第 1 部分 的 “部署和运行应用程序” 小节 中的两个步骤。还需要从 Sun 的 JSF 网站下载 jsf-1_1_01.zip 并解压。将 jsf-1.1.X.zip 中的所有文件复制到 JSFAcegiSampleWithSecureManagedBeans 应用程序的 WEB-INF/lib 文件夹中。还需要下载 cglib-full-2.0.2.jar 文件 (在本系列的 第 3 部分 中用到过)并将它复制到 JSFAcegiSampleWithSecureManagedBeans 应用程序的 WEB-INF/lib 文件夹中。 从浏览器访问 http://localhost:8080/JSFAcegiSampleWithSecureManagedBeans 可以调用示 例应用程序。

直接在 JSF 应用程序中使用 Acegi 的 IOC bean

您已经学习了如何将 JSF 托管 bean 的属性映射到 Acegi 的 IOC bean,如 何配置 DelegatingVariableResolver 以将表达式解析为 IOC bean。还看到了 JSF 和 Acegi 如何协作以保护对 bean 数据的访问。

除此之外,还能够直接在 JSF 页面中使用 IOC bean,如 清单 7 中的 JSF 页面所示:

清单 7. 直接在 JSF 页面中使用 IOC bean

<%@ taglib uri="http://java.sun.com/jsf/html"  prefix="h" %> <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" % > <html> <head> <title>JSF Acegi simple method security application: TEST  PAGE</title> </head> <body>    <f:view>     <h2>     <h:outputText value="Protected Resource 1:"/>     </h2>     </br>     <h3>     <h:outputText value="#{publicCatalog.data}"/>     </br>     <h:outputText value="#{privateCatalog.data}"/>     </h3>    </f:view> </bod

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