2012-02-29 170 views
1

我知道有很多关于Spring Security的文档。但是,我无法找到我的问题的答案。身份验证管理器中的交换机身份验证处理程序

据我所知,下面的配置将使认证管理器遍历每个认证提供者,除非找到匹配。

<bean id="authenticationManager" class="org.springframework.security.providers.ProviderManager"> 
    <property name="providers"> 
     <list> 
      <ref local="ldapAuthenticationProvider"/> 
      <ref bean="${bean.daoAuthenticationProvider}"/> 
      <ref bean="anonymousAuthenticationProvider"/> 

     </list> 
    </property> 
</bean> 

但是,我想根据请求参数在可用提供程序之间切换,而不是尝试所有这些提供程序。我想知道是否可以使用过滤器或其他方式切换?

回答

0

子类ProviderManager并覆盖getProviders()。由于getProviders()不包含任何参数,因此您需要在过滤器链中的某处设置一个ThreadLocal,并使用请求或请求具有所需参数的标志。

+0

我放弃了这样做的完整想法。所以不确定这个答案是否真的有效。 – 2012-11-26 11:41:19