1. 集成 spring-security 框架
1). 加入 spring-security 的两个个jar 包
2). 在 web.xml 文件中加入加入 spring-security 框架的过滤器
3). 新建 applicationContext-security.xml 配置文件,并且把 security 作为默认的命名空间, 并将其导入到 applicationContext.xml 中
2. 设计领域模型:
Authority -- 权限
Resource -- 资源
Role -- 角色
Employee -- 添加 Set<Role> roleSet 属性
3.分析项目中对象的关系
Resource 和 Authority 为多对多的对应关系
Authority 和 Role 为多对多的对应关系
Role 和 Employee 为多对多的对应关系
所以还需要 3 个额外的关联表
4.页面的处理
1)修改当前系统的 login.jsp 页面, 改为 spring-security 的登录页面, 并且在 <http> 节点中进行配置.
2) 新建 UserDetailsService 接口的实现类, 以实现从数据库中获取用户信息, 并把该类的 Bean 引用装配给 <authentication-provider> 节点的 user-service-ref 属性
5.实现步骤
1)向 ems_resource_table, ems_authority_table, ems_resource_authority_table 数据表中添加数据
2)新建 ResourceDetailsService 接口的实现类, 实现从数据库中读取需要被保护的资源信息及其可以访问这些资源的权限信息
3)利用 FactoryBean 新建 DefaultFilterInvocationDefinitionSource 接口的 Bean, 并把 ResourceDetailsService 的 Bean 注入进来, 再把该 Bean 配置为 filterSecurityInterceptor 过滤器的 objectDefinitionSource 属性
6. 实现权限模块:
1). 实现导航的页面的权限化, 根据当前登录员工的权限定制 struts-menu, 并添加登出功能.
①. 参考 struts-menu 例程中的 Dynamic, Databased-driven Menu 链接中的代码, 提供模拟实现
-员工管理
-员工添加
-员工查询
②. 修改 Authority 领域模型使其适应 struts-menu 实现:
/**
* 当前权限的父权限
*/
private Authority parentAuthority;
/**
* 当前权限的子权限
*/
private Set<Authority> subAuthorities;
/**
* 进入当前权限的 Resource 引用
*/
private Resource mainResource;
/**
* 是否是导航菜单. 1 -- 是, 0 -- 不是
*/
private int isNavigate;
③. 新建 MenuAction, 用于显示当前登录用户的导航按钮树.
a. 获取当前用户的登录名
b. 利用登录名获取当前用户的所具有的一切权限信息, 利用这些权限构建导航按钮树.
2). 实现 Role 的增, 删, 改, 查
3). 实现可以对 Employee 的 Role 的赋予和修改
1). 加入 spring-security 的两个个jar 包
2). 在 web.xml 文件中加入加入 spring-security 框架的过滤器
3). 新建 applicationContext-security.xml 配置文件,并且把 security 作为默认的命名空间, 并将其导入到 applicationContext.xml 中
2. 设计领域模型:
Authority -- 权限
Resource -- 资源
Role -- 角色
Employee -- 添加 Set<Role> roleSet 属性
3.分析项目中对象的关系
Resource 和 Authority 为多对多的对应关系
Authority 和 Role 为多对多的对应关系
Role 和 Employee 为多对多的对应关系
所以还需要 3 个额外的关联表
4.页面的处理
1)修改当前系统的 login.jsp 页面, 改为 spring-security 的登录页面, 并且在 <http> 节点中进行配置.
2) 新建 UserDetailsService 接口的实现类, 以实现从数据库中获取用户信息, 并把该类的 Bean 引用装配给 <authentication-provider> 节点的 user-service-ref 属性
5.实现步骤
1)向 ems_resource_table, ems_authority_table, ems_resource_authority_table 数据表中添加数据
2)新建 ResourceDetailsService 接口的实现类, 实现从数据库中读取需要被保护的资源信息及其可以访问这些资源的权限信息
3)利用 FactoryBean 新建 DefaultFilterInvocationDefinitionSource 接口的 Bean, 并把 ResourceDetailsService 的 Bean 注入进来, 再把该 Bean 配置为 filterSecurityInterceptor 过滤器的 objectDefinitionSource 属性
6. 实现权限模块:
1). 实现导航的页面的权限化, 根据当前登录员工的权限定制 struts-menu, 并添加登出功能.
①. 参考 struts-menu 例程中的 Dynamic, Databased-driven Menu 链接中的代码, 提供模拟实现
-员工管理
-员工添加
-员工查询
②. 修改 Authority 领域模型使其适应 struts-menu 实现:
/**
* 当前权限的父权限
*/
private Authority parentAuthority;
/**
* 当前权限的子权限
*/
private Set<Authority> subAuthorities;
/**
* 进入当前权限的 Resource 引用
*/
private Resource mainResource;
/**
* 是否是导航菜单. 1 -- 是, 0 -- 不是
*/
private int isNavigate;
③. 新建 MenuAction, 用于显示当前登录用户的导航按钮树.
a. 获取当前用户的登录名
b. 利用登录名获取当前用户的所具有的一切权限信息, 利用这些权限构建导航按钮树.
2). 实现 Role 的增, 删, 改, 查
3). 实现可以对 Employee 的 Role 的赋予和修改
本文详细介绍了如何在项目中集成Spring Security框架,并设计领域模型以实现权限管理。包括加入框架所需的JAR包、配置web.xml文件、创建安全上下文文件、分析对象关系、页面处理以及实现权限模块等步骤。
1529

被折叠的 条评论
为什么被折叠?



