Welcome 微信登录

首页 / 软件开发 / JAVA / 使用Acegi保护Java应用程序,第5部分: 保护JSF应用程序中的JavaBean

使用Acegi保护Java应用程序,第5部分: 保护JSF应用程序中的JavaBean2011-09-07 ibm Bilal SiddiquiJSF 应用程序中使用的 bean 的可配置安全性

这个 系列 由五部分组成,介绍了 Acegi Security System,并演示了如何 使用 Acegi 保护企业级 Java 应用程序。本文是该系列的最后一部分,将继续 讨论使用 Acegi 保护 JSF 应用程序。在 第 4 部分 中,我介绍了如何在不编 写 Java 代码的情况下使用 Acegi 保护 JSF 页面。我还详细说明了部署 JSF- Acegi 应用程序和用户访问该程序时发生的事件。在本部分中,我将着重介绍在 JSF 应用程序中保护 JavaBean 的技术。

首先展示如何将 第 3 部分 中演示的 bean 安全性概念应用于 JSF 应用程 序,其效果不是太理想。然后演示两项新技术,这些新技术特别适合在 JSF 应 用程序中保护 JavaBean。最后,总结四点策略,可以让您不用编写任何 Java 代码就能够使用 Acegi 在 JSF 应用程序中保护 bean。

简单的技术

在 JSF 应用程序中使用安全 bean 的最简单方法就是,执行 第 3 部分 的 清单 4 中介绍的五个步骤。在第 3 部分中,我从 servlet 上下文中取出了 Spring 框架的 Web 应用程序上下文对象。可以在以后使用 Web 应用程序上下 文安全地访问 bean。下面的 清单 1 演示了如何在 JSF 页面中使用 Web 应用 程序上下文:

清单 1. 从 servlet 上下文提取 Web 应用程序上下文,并将其用于 JSF 页 面

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@page import="sample.CatalogBean"%>
<%@page import="org.springframework.web.context.support.WebApplicationContextU tils" %>
<%@page import="org.springframework.web.context.WebApplicationContext" % >

<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" % >
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" % >

<html>
<head>
<title>Acegi simple method security application: TEST PAGE</title>
</head>
<body>

<f:view>
<h2>
<h:outputText value="Protected Resource 1:"/>
</h2>
<%
try {
WebApplicationContext webApplicationContext =
WebApplicationContextUtils.getWebApplicationContext (
this.getServletConfig().getServletContext());
CatalogBean privateCatalog = (CatalogBean)
webApplicationContext.getBean("privateCatalog");
String privateData = catalog.getData();
request.setAttribute("privateData", privateData);
}
catch (Exception e) { }
%>

<h3>
<h:outputText value="#{privateData}"/>
</h3>

</f:view>
</body>
</html>