日期:2014-05-16  浏览次数:20378 次

acegi security实践教程—资源角色信息存到放数据库

  回顾:

  前几篇博客中,我们都是在acegi配置文件中配置那些web资源需要保护,这次为了更接近企业开发,我们把web资源角色信息都存放到数据库中。
  那既然自己设计表,那么就需要自己重新定义 objectDefinitionSource了,那先看看我们原来acegi的配置:
  
  那默认的调用PathBasedFilterInvocationDefinitionMap类,
  
  主要的方法如下:
  
  

  前提说明:

  在最近几篇博客中,都有debug步骤,其中debug步骤,是因为调试中为了看源码必经之路,为了更让同学们了解其调用步骤,所以才加入debug步骤。在博客中不可能把所有的源代码贴出,所以只能截关键代码。因为有时自定义类,想知道何时何地以及如何调到自己实现类。
  有时为了明白框架为何抛出异常以及为何转到这种页面,这个时候都需要一遍遍又一遍遍又又……的debug,哈哈,大家肯定都有这种经历吧

具体开发步骤:

  开发环境:

  MyEclispe10.7.1+tomcat6.0.37+acegi1.0.5+spring2.0

  项目目录如下:

  其中readme主要用来记录本次验证目的
 

讲解:

 根据上述默认的PathBasedFilterInvocationDefinitionMap类,我们主要重写其方法即可,只要把其角色信息封装成ConfigAttributeDefinition对象返回即可。
 封装的类信息如下:


debug运行:

 当职责连运行到FilterSecurityInterceptor类的doFilter时:

 第一步:进入FilterSecurityInterceptor类的DoFilter方法中


 

 第二步:进入invoke方法