看Acegi源码时,发现这么一段有些奇怪的代码.
protected Filter[] obtainAllDefinedFilters() {
Iterator cads = this.filterInvocationDefinitionSource.getConfigAttributeDefinitions();
Set list = new LinkedHashSet();
while (cads.hasNext()) {
ConfigAttributeDefinition attribDef = (ConfigAttributeDefinition) cads.next();
Filter[] filters = obtainAllDefinedFilters(attribDef);
for (int i = 0; i < filters.length; i++) {
list.add(filters[i]);
}
}
return (Filter[]) list.toArray(new Filter[0]);
}
红色的代码为什么不直写成: return obtainAllDefinedFilters(attribDef);呢? 毕竟
obtainAllDefinedFilters本身就是返回一个Filter数组,为什么那个方法里还有再重复的加到一个List中,再把list转为数组呢?
是Acegi开发小组粗心的过?还是有意为之?
下面是红色代码调用的那个方法:
private Filter[] obtainAllDefinedFilters(ConfigAttributeDefinition configAttributeDefinition) {
List list = new Vector();
Iterator attributes = configAttributeDefinition.getConfigAttributes();
while (attributes.hasNext()) {
ConfigAttribute attr = (ConfigAttribute) attributes.next();
String filterName = attr.getAttribute();
if (filterName == null) {
throw new IllegalArgumentException("Configuration attribute: '" + attr
+ "' returned null to the getAttribute() method, which is invalid when used with FilterChainProxy");
}
if (!filterName.equals(TOKEN_NONE)) {
list.add(this.applicationContext.getBean(filterName, Filter.class));
}
}
return (Filter[]) list.toArray(new Filter[list.size()]);
}
分享到:
相关推荐
Acegi是Spring Security的前身,它是一个用于Java企业级应用的安全框架,提供了全面的身份验证、授权和会话管理功能。这个压缩包包含了Acegi的示例代码和一个学习资源,对于初学者来说是非常宝贵的资料。 首先,让...
- AOP在Acegi中用于实现安全拦截,通过定义安全拦截器,可以在方法调用前、后或异常时执行特定的安全操作,比如权限检查。 5. **迁移至Spring Security** - 随着Spring框架的发展,Spring Security成为Acegi的...
Acegi Security,现称为Spring Security,是一个强大的安全框架,主要用于基于Spring的企业级应用。它通过Spring的依赖注入(IoC)和面向切面编程(AOP)功能,提供了声明式的安全访问控制。Acegi能够实现精细的权限...
Acegi Security是一个专门为Spring框架设计的权限控制框架,旨在为基于J2EE的企业级应用程序提供全面的安全服务。这个框架解决了J2EE规范中安全性配置不便于移植的问题,使得应用程序的安全设置能够在不同服务器环境...
Acegi-Spring安全框架是一个专为基于Spring的企业应用设计的安全框架,现在被称为Spring Security。它提供了声明式的安全访问控制,允许开发者在Spring容器中配置安全相关的Bean,利用Spring的依赖注入(IoC)和面向...
Spring Acegi是一个安全框架,它为Spring应用提供了全面的安全管理解决方案。这个例子是为初学者设计的,旨在帮助他们快速理解和应用Acegi框架。Acegi(现在已被Spring Security替代)在Spring应用程序中提供了身份...
它不仅适用于 Web 应用的保护,还能在服务层面上确保方法调用的安全性,这使得 Acegi 成为一个灵活且全面的安全解决方案,适合于各种基于 Spring 的企业级应用。通过使用 Acegi,开发者可以专注于业务逻辑,而无需...
Spring Acegi是一个安全框架,它为Spring应用提供了一套强大的身份验证和授权机制。这个框架在Spring Security(之前称为Spring Security)之前被广泛使用。在本文中,我们将深入探讨Spring Acegi的核心概念、功能和...
Acegi安全系统是一个高度集成化的安全框架,专为基于Spring的应用系统设计。它通过提供一系列可在Spring应用上下文中配置的Bean来支持依赖注入和面向切面编程。Acegi不仅能够保护Web应用系统,还能在更低层次上对...
Acegi是一个专门为SpringFramework应用提供安全机制的开放源代码项目,全称为Acegi Security System for Spring,当前版本为 0.8.3。它使用了Spring的方式提供了安全和认证安全服务,包括使用Bean Context,拦截器和...
AceGI,全称为Acegi Security,是Java领域中一个用于Spring框架的安全组件,它提供了全面的身份验证、授权和会话管理功能。这个框架在早期的Spring版本中非常流行,为开发者构建安全的Web应用程序提供了强大的支持。...
Acegi 是一个强大的 Java 安全框架,专用于系统安全编程,尤其在处理认证和授权方面表现出色。在本文中,我们将深入探讨 Acegi 的基本概念、如何设置以及它如何与 Spring 框架集成。 首先,让我们了解 Acegi 的核心...
5. **RunAsManager**:在执行某些操作时,可以有选择性地替换当前的Authentication对象,以实现“作为”另一个用户运行代码的能力。 6. **SecureObject拦截器**:协调AuthenticationManager、AccessDecisionManager...
- **接口定义:**`org.acegisecurity.AuthenticationManager`定义了一个名为`authenticate(Authentication authentication)`的方法,该方法接收一个`Authentication`对象作为参数,并尝试验证用户身份。 ##### 3. ...
这些注解指定需要的角色或权限,Acegi Security会在方法调用前进行权限检查。 6. **URL安全控制**:除了保护业务方法,Acegi Security还可以用于控制URL级别的访问。通过`http`元素配置,可以设置URL访问规则,如...
Acegi Security,现已被Spring Security所取代,是Java EE应用程序中的一个强大且灵活的权限管理框架。它提供了全面的身份验证、授权和访问控制功能,旨在确保企业级应用的安全性。Acegi通过AOP(面向切面编程)的...
Acegi安全系统,是一个用于Spring Framework的安全框架,能够和目前流行的Web容器无缝集成。它使用了Spring的方式提供了安全和认证安全服务,包括使用Bean Context,拦截器和面向接口的编程方式。因此,Acegi安全...
Spring Acegi是一个安全框架,它为Spring应用提供了全面的安全管理功能。这个"spring acegi 使用工程demo"显然是一个示例项目,旨在帮助开发者理解和实践如何在Spring应用中集成和使用Acegi安全框架。 首先,Acegi...
Acegi Security(现已被Spring Security替代)是一个功能强大的安全框架,它主要解决了认证(Authentication)和授权(Authorization)这两个核心的安全问题。 首先,让我们理解认证和授权的基本概念: - **认证**...