Spring Security3的使用方法有4种: 一种是全部利用配置文件,将用户、权限、资源(url)硬编码在xml文件中。 二种是用户和权限用数据库存储,而资源(url)和权限的对应采用硬编码配置。 三种是细分角色和权限,并将用户、角色、权限和资源均采用数据库存储,并且自定义过滤器,代替原有的FilterSecurityInterceptor过滤器,并分别实现AccessDecisionManager、 InvocationSecurityMetadataSourceService和UserDetailsService,并在配置文件中进行相应配置。 四是修改spring security的源代码,主要是修改InvocationSecurityMetadataSourceService和UserDetailsService两个类。前者是将配置文件或数据库中存储的资源(url)提取出来加工成为url和权限列表的Map供Security使用,后者提取用户名和权限组成一个完整的 (UserDetails)User对象,该对象可以提供用户的详细信息供AuthentationManager进行认证与授权使用。该方法理论上可行,但是比较暴力,不推荐使用。 Spring Security 是一个强大的安全框架,主要用于Java应用的安全管理。在Spring Security 3版本中,有四种主要的使用方法,每种方法适用于不同的应用场景和需求。 1. **全配置文件方式**: 这是最基础的使用方式,所有的用户、权限以及资源URL都直接硬编码在XML配置文件中。这种方式的优点是配置直观,易于理解和调试。但缺点是当系统规模扩大,用户和权限数量增多时,维护起来非常不便,难以适应变化。 2. **部分数据库存储**: 在这种模式下,用户和权限的信息被存储在数据库中,而资源URL和权限的映射依然通过配置文件硬编码。这种方法相比全配置文件方式,提高了数据的动态性,但资源和权限的对应关系仍不够灵活。 3. **全数据库存储及自定义过滤器**: 这是更进阶的用法,用户、角色、权限和资源全部从数据库获取,同时自定义过滤器替换默认的`FilterSecurityInterceptor`。通过实现`AccessDecisionManager`来处理访问决策,`InvocationSecurityMetadataSourceService`用于从数据库中加载和处理资源与权限的关系,`UserDetailsService`则用于从数据库中检索用户信息并构造`UserDetails`对象。这种方式提供了更高的灵活性和可扩展性,适合大型复杂系统。 4. **源码修改**: 尽管理论上可行,但修改Spring Security的源代码来定制功能并不推荐,因为这会增加维护难度,且与Spring Security的更新和升级不兼容。 在实际应用中,通常会选择第三种方式,因为它既保持了配置的灵活性,又能够根据业务需求动态调整。在配置文件中,我们需要设置`springSecurityFilterChain`过滤器,通过`DelegatingFilterProxy`将请求转发到Spring Security进行处理。`ContextLoaderListener`监听器确保Spring容器在应用启动时加载。在`securityConfig.xml`配置文件中,我们将定义访问控制规则、用户认证和授权策略等。 例如,你可以配置`<http>`元素来定义URL拦截规则,使用`<intercept-url>`子元素指定哪些URL需要什么样的权限才能访问。接着,通过`<authentication-manager>`定义认证机制,`<user-service>`或`<jdbc-user-service>`可以用来从数据库加载用户信息。`<access-decision-manager>`和`<metadata-source>`则分别用于访问决策管理和元数据源。 在实现过程中,可能还需要定义自定义的`UserDetailsService`实现,以便从数据库中检索用户并构建`UserDetails`对象。此外,如果需要更复杂的权限管理,可以实现`AccessDecisionManager`接口来自定义访问决策策略。 Spring Security 3提供了多种使用策略,可以根据项目需求选择合适的实现方式,从而实现安全、灵活的身份验证和授权管理。在实际开发中,应尽可能避免直接修改源代码,而是通过扩展和配置来满足特定需求,以保证系统的可维护性和稳定性。
剩余17页未读,继续阅读
- wuyaqing1322012-12-14很实用,通过这个介绍我更深入的了解了
- mdj1632014-07-13很好很全面。适合我这样没有基础的初学者。
- Jucbt2012-12-03看看了,写得倒是挺仔细的,因为初学这个,到底怎么样还不清楚。
- hht136995597332012-12-17不错 蛮详细的
- 粉丝: 19
- 资源: 18
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助