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