public class ConsensusBased extends AbstractAccessDecisionManager
AccessDecisionManager
that uses a
consensus-based approach.
"Consensus" here means majority-rule (ignoring abstains) rather than unanimous
agreement (ignoring abstains). If you require unanimity, please see
UnanimousBased
.
logger, messages
Constructor and Description |
---|
ConsensusBased(java.util.List<AccessDecisionVoter<? extends java.lang.Object>> decisionVoters) |
Modifier and Type | Method and Description |
---|---|
void |
decide(Authentication authentication,
java.lang.Object object,
java.util.Collection<ConfigAttribute> configAttributes)
This concrete implementation simply polls all configured
AccessDecisionVoter s and upon completion determines the consensus of
granted against denied responses. |
boolean |
isAllowIfEqualGrantedDeniedDecisions() |
void |
setAllowIfEqualGrantedDeniedDecisions(boolean allowIfEqualGrantedDeniedDecisions) |
afterPropertiesSet, checkAllowIfAllAbstainDecisions, getDecisionVoters, isAllowIfAllAbstainDecisions, setAllowIfAllAbstainDecisions, setMessageSource, supports, supports
public ConsensusBased(java.util.List<AccessDecisionVoter<? extends java.lang.Object>> decisionVoters)
public void decide(Authentication authentication, java.lang.Object object, java.util.Collection<ConfigAttribute> configAttributes) throws AccessDeniedException
AccessDecisionVoter
s and upon completion determines the consensus of
granted against denied responses.
If there were an equal number of grant and deny votes, the decision will be based
on the isAllowIfEqualGrantedDeniedDecisions()
property (defaults to true).
If every AccessDecisionVoter
abstained from voting, the decision will
be based on the AbstractAccessDecisionManager.isAllowIfAllAbstainDecisions()
property (defaults to
false).
authentication
- the caller invoking the methodobject
- the secured objectconfigAttributes
- the configuration attributes associated with the method
being invokedAccessDeniedException
- if access is deniedpublic boolean isAllowIfEqualGrantedDeniedDecisions()
public void setAllowIfEqualGrantedDeniedDecisions(boolean allowIfEqualGrantedDeniedDecisions)