Ich werde verlassen, wie Sie eigene Authentifizierungs-Provider auf die andere Vielzahl von Beispielen aus Googleland und hier auf StackOverflow injizieren. Es sieht so aus, als ob es eine bestimmte Bean mit der XML-Datei markiert. Aber hoffentlich kann ich einige andere Details für dich ausfüllen.
So haben Sie die Klasse etwas definiert wie oben, und ich werde mehr von den Details hinzufügen, die Sie für den Frühling benötigen (dh das Material von oben als auch fusionieren.
public class SwitchingAuthenticationProvider implements AuthenticationProvider
{
....
public List<AuthenticationProvider> getProviders() { return delegateList; }
public void setProviders(List<AuthenticationProvider> providers) {
this.delegateList = providers;
}
....
}
Dies ermöglicht Ihnen eine Vielzahl von Anbietern mit Feder zu injizieren:
<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>
Am Ende, wie Sie die Anbieter bevölkern jedes Mittel sein könnten, den delegator eine Sammlung von Anbietern bekommen Wie sie ist, die man zur Karte bis zu verwenden, bis zu. Sie könnten die Auflistung basierend auf dem aktuellen Status des Delegierer. Es könnte eine Liste von mehr als einem sein, um es zu versuchen. Es könnte zwei Eigenschaften geben, "get/setPrimary" und "get/setSecondary" für eine fail-over-ähnliche Funktionalität. Sobald Sie den Delegierten injiziert haben, stehen Ihnen die Möglichkeiten offen.
Lassen Sie mich wissen, ob dies Ihre Frage nicht beantwortet.
@Matt Danke. Das hilft. Ich werde das ausprobieren und Sie wissen lassen. – Jay