FilterSecurityInterceptor can't match URL parameters

FilterSecurityInterceptor can't match URL parameters
2008年04月08日 星期二 下午 7:25

      对于这个问题,一直困扰了我很久 ,之前对acegi的objectDefinitionSource的表达式一直使用Apache Ant Paths的方式进行处理,这种处理方式对含有“=”的表达式不能解析,这样导致在对url的控制力度上只能停留在Action层面,对于Action的parameters不能进行权限控制。
      后来看过acegi的源代码,发现
Acegi并未为objectDefinitionSource显式的注册编辑器,通过java.beans下的 PropertyEditorManager, 根据“类型名称+Editor”来查找属性相应的编辑器机制,查到相应的编辑器为FilterInvocationDefinitionSourceEditor,Acegi实例化了FilterInvocationDefinitionSourceEditor,并调用它完成后续的读取配置并给属性赋值的工作。在PropertyEditorSupport的setAsText方法中可以通过正则表达式方式匹配。所以在对前面遇到的问题上可以通过使用正则表达式规则处理所有的表达式。将上面的“=”符号替换为“\x3D”即可。这样就可以控制到Action的parameters层面,再加上MethodSecurityInterceptor的控制,已经可以实现几乎所有的权限控制。
     希望以上能对同样为此问题烦恼的java developer有帮助!^_^

posted on 2012-01-13 13:23  阳光总在风雨后001  阅读(509)  评论(0编辑  收藏  举报

导航