我會留下怎樣自定義的身份驗證提供者從Googleland注入到實例其他無數,並在這裏StackOverflow。它看起來好像是用xml標記特定的bean。但希望我能爲你填寫一些其他細節。
所以你定義的類有點像上面我會添加更多的細節,你需要爲Spring(即從上面的合併,以及東西。
public class SwitchingAuthenticationProvider implements AuthenticationProvider
{
....
public List<AuthenticationProvider> getProviders() { return delegateList; }
public void setProviders(List<AuthenticationProvider> providers) {
this.delegateList = providers;
}
....
}
這將使使用了Spring注入提供商的主機:
<bean id="customAuthProvider1" class=".....CustomProvider1"> ... </bean>
<bean id="customAuthProvider2" class=".....CustomProvider2"> ... </bean>
...
<bean id="customAuthProviderX" class=".....CustomProviderX"> ... </bean>
<bean id="authenticationProvider" class="....SwitchingAuthenticationProvider">
<security:custom-authentication-provider/>
<!-- using property injection (get/setProviders) in the bean class -->
<property name="providers">
<list>
<ref local="customAuthProvider1"/> <!-- Ref of 1st authenticator -->
<ref local="customAuthProvider2"/> <!-- Ref of 2nd authenticator -->
...
<ref local="customAuthProviderX"/> <!-- and so on for more -->
</list>
</property>
</bean>
你到底如何填充供應商原本可以得到委託人提供程序的集合,他們是如何映射高達哪一個使用任何手段達到。你可以將這個集合映射成一個已命名的,基於當前的狀態委託。它可能是一個不止一個嘗試的列表。它可以是兩個屬性,「get/setPrimary」和「get/setSecondary」用於故障切換功能。一旦你有了代理注入的可能性取決於你。
讓我知道這是不是回答你的問題。
@Matt謝謝。這有助於。我會試試這個,讓你知道。 – Jay 2010-02-18 19:20:45