菜鸟-手把手教你把Acegi应用到实际项目中

preview
需积分: 0 15 下载量 16 浏览量 更新于2009-08-13 收藏 876KB DOC 举报
Acegi 是一个早期的安全框架,用于Java Spring应用中的身份验证和授权管理。这个框架使得开发者能够轻松地在Spring应用中实现复杂的权限控制。在本文中,我们将深入理解如何将Acegi应用到实际项目中,特别关注其核心配置——web.xml中的过滤器设置和Acegi安全文件的配置。 我们来看web.xml中的过滤器配置: 1. **FilterToBeanProxy**:Acegi通过FilterToBeanProxy实现了Servlet Filter的功能,它委托给Spring的FilterChainProxy来处理过滤逻辑。FilterChainProxy包含了一系列过滤器,每个过滤器都有特定的安全职责。在web.xml中,你需要定义一个名为Acegi Filter Chain Proxy的filter,并指定其类为`org.acegisecurity.util.FilterToBeanProxy`。通过`init-param`配置`targetClass`为`org.acegisecurity.util.FilterChainProxy`,这样就建立了Acegi与Spring的连接。 2. **filter-mapping**:接着,你需要配置filter-mapping来指定哪些URL需要通过Acegi进行过滤。例如,你可能会选择只对`.do`和`.jsp`以及`/j_acegi_security_check`的请求应用安全控制,以避免JavaScript、CSS等静态资源被误判。你也可以选择`/*`匹配所有请求,但这可能会对性能造成影响,因为所有请求都将经过Acegi的安全检查。 接下来,我们转向Acegi安全文件的配置: 1. **过滤链(FILTER CHAIN)**:Acegi的核心是FilterChainProxy,它按照定义的顺序调用过滤器。过滤链定义了安全流程,包括认证、授权等步骤。CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON参数用于指定在比较URL之前是否将其转换为小写,这是一个防止因URL大小写不敏感问题而引发的安全漏洞的配置。 在Acegi的安全配置文件中,你还需要定义用户、角色、访问控制规则等。例如,你可能需要创建一个或多个AuthenticationProvider来处理用户的登录验证,使用AccessDecisionManager来决定用户是否有权访问某个资源,以及定义ExpressionBasedAccessDecisionManager来支持基于表达式的访问控制。 在实际项目中,Acegi的配置可能会非常复杂,涉及到各种策略和组件的组合。例如,你可以配置RememberMeServices来实现“记住我”功能,使用ChannelProcessingFilter来控制HTTP和HTTPS之间的切换,或者利用AbstractPreAuthenticatedProcessingFilter实现基于请求属性的预认证。 Acegi提供了一套强大的安全框架,虽然初学者可能会觉得配置复杂,但一旦理解并掌握了其工作原理,就可以灵活地为Spring应用构建定制化的安全解决方案。不过,随着Spring Security的推出,Acegi已经不再维护,建议新项目使用更新的Spring Security框架,它继承了Acegi的优点,并且拥有更多的特性和改进。在学习过程中,不断实践和调试是掌握Acegi的关键,同时参考官方文档和其他开发者的经验分享也会非常有帮助。