如果用acegi acl,你什么发现在定义objectDefinitionSource时被拦截的方法参数必须与投票器定义的processDomainObjectClass一致,如果你想deleteById就会出错,所以重写了AbstractAclVoter下的getDomainObjectInstance。在这增加对deleteById的处理方法。
for (int i = 0; i < params.length; i++) {
if (processDomainObjectClass.isAssignableFrom(params[i])) {
return args[i];
}
else {
Object o;
try {
o = processDomainObjectClass.newInstance();
Method setIdMethod = processDomainObjectClass.getMethod("setId", new Class[]{Integer.class});
setIdMethod.invoke(o, new Object[]{Integer.parseInt(args[0].toString())});
return o;
} catch (InstantiationException e) {
throw new AuthorizationServiceException("不能创建'" + processDomainObjectClass + "'的实例." + e.getMessage());
} catch (IllegalAccessException e) {
throw new AuthorizationServiceException("不能创建setId方法,在实体类中必须提供setId(Integer)方法." + e.getMessage());
} catch (SecurityException e) {
throw new AuthorizationServiceException(e.getMessage());
} catch (NoSuchMethodException e) {
throw new AuthorizationServiceException("没有找到setId(Integer)方法." + e.getMessage());
} catch (IllegalArgumentException e) {
throw new AuthorizationServiceException("setId(Integer)方法参数必须为Integer类型." + e.getMessage());
} catch (InvocationTargetException e) {
throw new AuthorizationServiceException("调用setId(Integer)方法出错." + e.getMessage());
}
}
}
分享到:
相关推荐
对于领域对象的访问,Acegi会在执行Bean方法前检查访问控制列表(ACL),确保用户有权操作该对象。 5. **体系结构** Acegi的核心组件包括AuthenticationManager负责身份认证,AccessDecisionManager负责访问控制...
这包括访问控制列表(ACL)和方法级别的安全性,确保只有授权用户才能执行特定操作。 3. **会话管理(Session Management)**:Acegi可以监控和管理用户的会话,防止会话固定攻击(Session Fixation)和会话超时。...
不同于传统的安全框架,Acegi采用了面向切面编程(AOP)的方式来处理认证和授权问题,这使得它能够与业务代码保持高度的解耦,同时也赋予了开发人员更多的灵活性来定制安全策略。本文将深入探讨Acegi的关键组件、...
Acegi Security是Spring框架早期的一个安全模块,它提供了全面的基于Spring的应用程序的安全管理功能。在本实例中,我们将深入探讨如何使用Acegi来控制用户的权限。Acegi Security已经被Spring Security替代,但其...
首先,Acegi 提供了一种强大的方法来管理 Web 应用程序的安全性,它基于 ACL(Access Control List,访问控制列表)模型,允许开发者精细地控制谁可以访问哪些资源。Acegi 集成了认证(Authentication)和授权...
`invoke()`方法是实际执行拦截的入口点。 在`invoke()`方法中,`FILTER_APPLIED`属性用于判断是否已经对当前请求进行了安全检查。如果请求中已包含此标志,且`observeOncePerRequest`配置为true,那么就不再重复...
其中,“SecureObject”拦截器是Acegi Security的核心组件之一,它体现了该系统的架构特点。如图1所示,关键类之间相互协作,而`AbstractSecurityInterceptor`是其主要实现类。 ![Acegi Key Secure Object Model](#...
- 如何配置Acegi以启用安全保护,包括设置安全拦截器和定义安全过滤器链。 - 用户认证的实现,包括定义`UserDetailsService`来获取用户信息,以及配置不同的认证提供者。 - 授权机制的设定,例如使用`...
此外,通过配置Acegi的拦截器,可以在方法级别实现细粒度的权限控制。 #### ACL访问控制列表 除了传统的认证和授权机制之外,Acegi还引入了ACL访问控制列表的概念,用于实现对领域对象的细粒度访问控制。ACL机制...
Spring Acegi 的授权机制基于 ACL(Access Control List),允许开发者对资源进行细粒度的权限控制。通过 `AccessDecisionManager` 和 `AccessDecisionVoter`,系统可以根据用户的角色和权限来决定是否允许访问特定...
标题中的“acegi 例子进行了扩展”意味着这个示例不仅包含了Acegi Security的基本功能,还可能包含了一些额外的定制或增强,比如自定义认证策略、更复杂的授权规则或者与其他系统的集成。这样的扩展有助于开发者深入...
4. **过滤器链**:Acegi 基于 Spring MVC 的 Filter 链模型,提供了一种拦截请求并进行安全处理的方式。开发者可以通过配置 Filter Security Interceptor 来定义哪些 URL 或请求需要进行安全检查。 5. **事件处理**...
Grails Acegi 0.1插件采用了Spring Security的ACL(Access Control List)机制,允许开发者定义角色和权限,然后根据这些规则来控制用户的操作。通过定义安全拦截器,可以限制特定URL、控制器或动作的访问,确保只有...
Acegi Security是一个已不再维护的Java安全框架,它在早期的Spring Security(以前称为Acegi Security)中扮演了重要角色。这个"acegi-security-jetty-1.0.7.jar.zip"文件是一个包含 Acegi Security 版本1.0.7与...
3. **会话管理**:Acegi Security可以监控和管理用户的会话,防止会话劫持和超时问题,确保用户会话的安全性。 4. **CSRF(跨站请求伪造)防护**:Acegi Security提供防止CSRF攻击的机制,确保用户操作的完整性。 ...
它是一个强大且高度可配置的安全框架,用于处理身份验证、授权以及访问控制等安全问题。在2.0.4版本中,Spring Security提供了许多关键特性,以确保应用程序的安全性。 首先,我们来了解一下Acegi到Spring Security...
- **安全对象和 AbstractSecurityInterceptor**:安全拦截器实现了对业务层方法调用的安全性控制。 - **配置属性是什么?**:定义了 AbstractSecurityInterceptor 的配置属性。 - **RunAsManager**:负责执行 Run...
此次版本未引入新的功能,但修正了一些已知的问题,增强了稳定性。 ##### 1.4 获取 Spring Security - **项目模块**: - `Core-spring-security-core.jar`:包含核心安全功能,如认证、授权等。 - `Web-spring-...