In meiner Feder Boot-Anwendung Ich habe folgende Filterregister:Prevent Filterkette von der Ausführung auf Basis der Bedingung
@Bean
public FilterRegistry filterRegistry(Service1 service1, Service2 service2,
EvictionService evictionService) throws GeneralSecurityException {
FilterRegistry r = FilterRegistry.instance();
r.put("filter1", new MetadataFilter(Service2,evictionService));
r.put("filter2", new RoutesFilter(service1,evictionService, publicKey));
return r;
}
Im ersten Filter I auf einem Zustand überprüfen müssen, wenn diese Bedingung erfüllt ist, ich mag Überspringe alle Filter in meiner Filterregistrierung. Was ich jetzt habe, ist, dass ich den Scheck am Anfang jedes Filters wie folgt tun:
public class Filter1 extends ZuulFilter {
public boolean shouldFilter() {
if(condition){
return false;
}
return true
}
}
public class Filter2 extends ZuulFilter {
public boolean shouldFilter() {
if(condition){
return false;
}
return true
}
}
aber was ich wirklich will, ist einen neuen Filter zu erstellen, der die Bedingung erfüllt ist, führen Sie den Zustand Filter am Anfang Wenn die Bedingung erfüllt ist, fahren Sie nicht mit der Ausführung der Filterregistrierung fort.
irgendwelche Ideen?
das wird definitiv funktionieren, danke für die Antwort. Allerdings suchte ich nach einer Antwort, die den vorhandenen Filtern keine Bedingungen hinzufügt. –
Die Implementierung einer solchen bedingten Ausführung von Filtern ohne Änderung des Codes in Filtern selbst ist nicht möglich, da Daten zur Laufzeit überprüft werden müssen und die Filterregistrierung nicht aktualisiert werden kann Laufzeit. – Avinash