`

菜鸟-手把手教你把Acegi应用到实际项目中(1.2)

阅读更多

7) daoAuthenticationProvider
  进行简单的基于数据库的身份验证。DaoAuthenticationProvider获取数据库中的账号密码并进行匹配,若成功则在通过用户身份的同时返回一个包含授权信息的Authentication对象,否则身份验证失败,抛出一个AuthenticatiionException

    <bean id="daoAuthenticationProvider"

        class="org.acegisecurity.providers.dao.DaoAuthenticationProvider">

        <property name="userDetailsService" ref="inMemDaoImpl" />

    </bean>

 

    <bean id="inMemDaoImpl"

        class="org.acegisecurity.userdetails.memory.InMemoryDaoImpl">

        <property name="userMap">

            <value>

                javaee=password,ROLE_SUPERVISOR

                qiuzj=password,ROLE_SUPERVISOR,disabled

</value>

        </property>

    </bean>

inMemDaoImpl提供的是基于内存存储用户的信息,inMemDaoImpl借助于userMap属性定义了若干用户。其中qiuzj状态为disabled,即处于失效状态

javaee=password,ROLE_SUPERVISOR格式为: 用户名=密码,以逗号分隔的多个角色

qiuzj =password,ROLE_SUPERVISOR,disabled格式为: 用户名=密码,以逗号分隔的多个角色,用户状态

 

8) filterInvocationInterceptor
  在执行转向url前检查objectDefinitionSource中设定的用户权限信息。首先,objectDefinitionSource中定义了访问URL需要的属性信息(这里的属性信息仅仅是标志,告诉accessDecisionManager要用哪些voter来投票)。然后,authenticationManager掉用自己的provider来对用户的认证信息进行校验。最后,有投票者根据用户持有认证和访问url需要的属性,调用自己的voter来投票,决定是否允许访问。

<bean id="filterInvocationInterceptor"

        class="org.acegisecurity.intercept.web.FilterSecurityInterceptor">

        <property name="authenticationManager" ref="authenticationManager" />

        <property name="accessDecisionManager" ref="httpRequestAccessDecisionManager" />

        <property name="objectDefinitionSource">

            <value><![CDATA[

                CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON

                PATTERN_TYPE_APACHE_ANT

                /secure.jsp=ROLE_SUPERVISOR

            ]]></value>

        </property>

    </bean>

objectDefinitionSource定义了web资源与角色的对应关系,即URL的权限配置信息。用于指定不同的URL资源对应的权限。例如配置:

/**/*.jpg=AUTH_ANONYMOUS,AUTH_USER

/**/*.gif=AUTH_ANONYMOUS,AUTH_USER

/**/*.png=AUTH_ANONYMOUS,AUTH_USER

/login.jsp*=AUTH_ANONYMOUS,AUTH_USER

/**=AUTH_USER

以上配置指定AUTH_ANONYMOUS权限的用户(即匿名用户)只可以访问图片资源和登录页面,AUTH_USER权限的用户可以访问全部WEB资源。

 

9) httpRequestAccessDecisionManager(投票通过策略管理器)用于管理投票通过策略。Acegi提供三种投票通过策略的实现:

AffirmativeBased(至少一个投票者同意方可通过),ConsensusBased(多数投票者同意方可通过),UnanimousBased(所有投票者同意方可通过)。本程序采用AffirmativeBased策略,并且禁止没人反对就通过的投票策略。

<bean id="httpRequestAccessDecisionManager"

        class="org.acegisecurity.vote.AffirmativeBased">

        <property name="allowIfAllAbstainDecisions" value="false"/>

        <property name="decisionVoters">

            <list>

                <bean class="org.acegisecurity.vote.RoleVoter"/>

            </list>

        </property>

    </bean>

必须是以rolePrefix设定的value开头的权限才能进行投票,AUTH_ , ROLE_

    <bean id="roleVoter" class="org.acegisecurity.vote.RoleVoter">

        <property name="rolePrefix" value="AUTH_"/>

   </bean>

默认时,rolePrefix = "ROLE_"

 


开发环境:

MyEclipse 5.0GA

Eclipse3.2.1

JDK1.5.0_10

tomcat5.5.23

acegi-security-1.0.7

Spring2.0

Jar包:

acegi-security-1.0.7.jar

Spring.jar

commons-codec.jar

好啦,第一篇到此结束,晚上快两点了,该睡觉了,晚安朋友们!

分享到:
评论
12 楼 song714186420 2012-01-12  
LZ啊....在访问受保护的页面的时候要输入用户名密码是什么啊....找了半天没找到啊
11 楼 smufnueeqg 2011-10-25  
谢谢  楼主
10 楼 smufnueeqg 2011-10-25  
为什么不能说谢谢  楼主呢
9 楼 wxdinghao19870426 2011-09-06  
都不能下载 
8 楼 yelangking 2011-08-30  
正在学,无私分享。
7 楼 zhanjia 2009-07-25  
SARA520 写道
跑不起来
咋办啊咋办
郁闷啊郁闷
弄了一天
都没跑起来过

下载相关的Jar包,下载工程包,应该是可以正常运行的。
测试过了,其他人都可以啊,再多检查检查吧
6 楼 SARA520 2009-07-04  
跑不起来
咋办啊咋办
郁闷啊郁闷
弄了一天
都没跑起来过
5 楼 zhanjia 2009-02-20  
大家一起进步^_^
4 楼 peachtao 2009-02-17  
:cry:
3 楼 peachtao 2009-02-17  
:cry:
2 楼 peachtao 2009-02-17  
楼主辛苦了。
1 楼 daoyongyu 2008-10-31  
楼主辛苦了,谢谢,工程可以运行

相关推荐

Global site tag (gtag.js) - Google Analytics