首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

讨论上对Acegi的扩展

2012-10-28 
讨论下对Acegi的扩展好吧,我承认取的标题太笼统了,有点哗众取宠的嫌疑了。首先说明,本篇要讨论的是对Filter

讨论下对Acegi的扩展
    好吧,我承认取的标题太笼统了,有点哗众取宠的嫌疑了。
    首先说明,本篇要讨论的是对FilterSecurityInterceptor的扩展。
    FilterSecurityInterceptor用于对所有URL资源进行拦截,并施加有效地访问控制。但是在实际当中,很多应用(包括springside)在使用Acegi的时候都扩展了FilterSecurityInterceptor,理由是资源和权限的关系配置在XML中,显得不灵活,无法修改。
   
     我们首先看下一个关于FilterSecurityInterceptor的例子:

<bean id="filterSecurityInterceptor" />
    在认证过程中我们通过四张表的关联把用户和权限的关系给找出来:
<bean id="jdbcDaoImpl"name="code"><bean id="filterSecurityInterceptor" class="org.acegisecurity.intercept.web.FilterSecurityInterceptor">           ...           <property name="objectDefinitionSource">               <value>                   CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON                   PATTERN_TYPE_APACHE_ANT                  /secure/admin/* = auth_1                /secure/app/* = auth_2            </value>           </property>       </bean>

    这样由于objectDefinitionSource保存的是资源权限的关系,对角色的修改是不会影响到他的。所以我觉得FilterSecurityInterceptor是没有必要修改的,只要在使用的时候变通下就行了。而且我在做项目的时候也不觉的把资源权限的关系配置在XML中有多不灵活,所有数据我直接从数据库里导出来,复制粘贴下就好了~

    如果有人觉得关联四张表很萎缩的话,还可以把权限名给冗余到角色权限关联表中去,这样就可以少关联一张表。

热点排行