这一章节假设你有一些Spring Security中访问控制的底层架构的知识。如果没有,你可以跳过他,后面再来看,这部分针对那些真正需要进行一些定制而不是简单的基于角色的安全的用户。

当你使用命名空间配置时,一个AccessDecisionManager实例将会被自动创建并注册用来按照你在intercept-urlprotect-pointcut(还有如果你使用了方法注解安全也包含在内)定义的访问属性进行访问决策。

默认的策略是使用一个 AffirmativeBased AccessDecisionManager和一个RoleVoter和一个 AuthenticatedVoter,你可以找到从验证章节找到更多信息。

定制AccessDecisionManager

如果你需要使用一个更复杂的访问控制策略,那么很容易的为方法和Web安全设置替代方案。

对于方法安全,通过在global-method-security上设置access-decision-manager-ref属性来为应用程序指导适当的AccessDecisionManager的Bean ID.

<global-method-security access-decision-manager-ref="myAccessDecisionManagerBean"> 
... 
</global-method-security> 

网站安全的语法一样,但是是在http元素上。

<http access-decision-manager-ref="myAccessDecisionManagerBean"> 
... 
</http>