使用 Acegi 保护 Java 应用程序,第 5 部分: 保护 JSF 应用程序中的 JavaBean
2010-03-18 00:00:00 来源:WEB开发网在 清单 6 可以看到,我在两个 IOC bean 中对实际的公共和私有数据进行了硬编码。在真实的应用程序中,这些 bean 将会从数据库读取数据。
现在已经看到了保护 JSP 托管 bean 中包装的数据所需要的所有组件和配置,下面看一下 JSF 和 Acegi 如何协作使用这些组件和配置。
JSF 和 Acegi 协作保护托管 bean
当用户试图访问 清单 2 的 JSF 页面时,就会发生 图 1 所示的一系列事件。我列出了支持 Acegi URL 安全性和 JSF 应用程序中的 bean 安全性的所有事件。
图 1. JSF 和 Acegi 组件协作
图 1 所示的事件顺序如下:
用户访问 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。
更多精彩
赞助商链接