Spring Security3 的使用方法有4 种: 一种是全部利用配置文件,将用户、权限、资源(url)硬编码在 xml 文件中
二种是用户和权限用数据库存储,而资源(url)和权限的对应采用硬编码配置
三种是细分角色和权限,并将用户、角色、权限和资源均采用数据库存储,并且自定义过滤器,代替原有的FilterSecurityInterceptor 过滤器,并分别实现 AccessDecisionManager、 InvocationSecurityMetadataSourceService 和 UserDetailsService,并在配置文件中进行相应配置
四是修改 spring security 的源代码,主要是修改 InvocationSecurityMetadataSourceService和 UserDetailsService 两个类
前者是将配置文件或数据库中存储的资源(url)提取出来加工成为 url 和权限列表的Map 供 Security 使用,后者提取用户名和权限组成一个完整的 (UserDetails)User 对象,该对象可以提供用户的详细信息供 AuthentationManager 进行认证与授权使用
该方法理论上可行,但是比较暴力,不推荐使用
本文有两个例子,我在简单例子章节实现了第一种方法
在复杂例子章节实现了第二种和第三种方法组合使用的例子
简单例子通俗易懂,不再赘述
复杂例子及其使用和扩展,我将穿插详细的配置注释和讲解,包括整个程序的执行过程
简单例子 创建 web 工程如下图所示: 配置如下图所示: 单击Finish 即可
把 从spring网 站 下 载 的spring-security-3
RELEASE解 压 , 并 将 其 中 的spring-security-samples-contacts-3