2017-01-13 6 views
2

Wir versuchen, ein altes Projekt in ein moderneres umzuwandeln. Es war eine Servlet-basierte Anwendung mit JSPs, und wir bewegen uns in Richtung Frühling. Wir dienen jsp-s, und sie enthalten viele statische Ressourcen. Wir verwenden Redis als Session-Speicher, und es ist wie ein Filter zugeordnet:Wie Ressourcen von SpringSessionRepositoryFilter auszuschließen?

<filter> 
    <filter-name>springSessionRepositoryFilter</filter-name> 
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class> 
</filter> 
<filter-mapping> 
    <filter-name>springSessionRepositoryFilter</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 

...

@Configuration 
@EnableRedisHttpSession(maxInactiveIntervalInSeconds = SpringSessionConfig.MAX_INACTIVE_INTERVAL_IN_SECONDS) 
@PropertySource(value = "classpath:redis.properties") 
public class SpringSessionConfig { ... } 

Statische Ressourcen in vielen verschiedenen Verzeichnisse verteilt sind, und das Problem ist, dass dieser Filter läuft für jede Ressource, was völlig verständlich ist.

Gibt es eine intelligente Möglichkeit, Ressourcen von diesem URL-Muster auszuschließen? Oder eine Konfiguration für diesen RepositoryFilter?

Die einzige Lösung, die ich gefunden habe, ist, einen großen Refactor zu machen und richtige Namespaces für statische Ressourcen zu erstellen, aber im Moment ist das zu viel Aufwand.

Ich habe auch Ressourcen-Handler Spring-Konfiguration hinzugefügt, aber es wird hier ignoriert.

Antwort

0

Ich glaube, Sie die springSessionRepositoryFilter erweitern können eigene Filter, und führen Sie dann die ausschließen Ressourcen in Ihrer doFilterInternal Methode und Config eine springSessionRepositoryFilter Bean Handbuch statt EnableRedisHttpSession Anmerkung zu implementieren, dann den Namen Filter Bean config web.xml .

+0

Danke, ich überprüfe das auch. Im Moment versuche ich etwas Ähnliches mit FilterChainProxy. hier gefunden: https://github.com/spring-projects/spring-session/issues/278 – JSONStatham

+0

ja, das kannst du auch machen, lege den Filter in die Filterkette. und verwenden Sie dann die Übereinstimmung der Federsicherheitsanforderung – chaoluo

Verwandte Themen