Acegi中投票策略分为三种
1:[b][b]org.acegisecurity.vote.AffirmativeBased
[/b][/b]只要有一票投赞成,即可通过
2:[b][b]org.acegisecurity.vote.ConsensusBased[/b][/b]
需要大多数的投票,方可通过
3:[b][b]org.acegisecurity.vote.UnanimousBased[/b][/b]
以上摘自一位道友的,以下是个人的一些体会:
感觉acegi定义个投票策略,就是为了指定在上面的objectDefinitionSource里配置的权限的处理方式:
1,用户属于其中一个权限组即通过认证;
2,用户必须符合所用的用户组;
3,弃权票的处理方式;
应用,首先我们来看一下acegi自带的例子
[bean id="filterInvocationInterceptor" class="org.acegisecurity.intercept.web.FilterSecurityInterceptor"]
[property name="authenticationManager" ref="authenticationManager"/]
[property name="accessDecisionManager"]
[bean class="org.acegisecurity.vote.AffirmativeBased"]
[property name="allowIfAllAbstainDecisions" value="false"/]
[property name="decisionVoters"]
[list]
[bean class="org.acegisecurity.vote.RoleVoter"/]
[bean class="org.acegisecurity.vote.AuthenticatedVoter"/]
[/list]
[/property]
[/bean]
[/property]
[property name="objectDefinitionSource"]
[value]
CONVERT_URL_TO_LOWERCASE_BEFORE_COMPARISON
PATTERN_TYPE_APACHE_ANT
/secure/extreme/**=ROLE_SUPERVISOR
/secure/**=IS_AUTHENTICATED_REMEMBERED
/**=IS_AUTHENTICATED_ANONYMOUSLY
[/value]
[/property]
[/bean]
这里采用的投票策略是org.acegisecurity.vote.AffirmativeBased,及只有有一票赞成就通过