2016-08-01 30 views
0

Ich entwickle eine Anwendung, wo ich PDF-Formulare mit Daten aus der Ansicht ausfüllen muss. Bevor ich Spring Boot Security eingestellt habe, hat alles gut funktioniert.Spring Boot Security: Zugriff auf neues PDF

Der Ordner, in dem ich diese PDFs erstelle, wird als öffentlich festgelegt. Wenn ich die Anwendung starte, kann ich auf alle PDFs zugreifen, die vor dem Start erstellt wurden, aber wenn ich eine neue erzeuge (und ich kann die Datei in meinem Dateisystem öffnen und prüfen, ob sie korrekt erstellt wurde), gibt mir die Anfrage für diese Datei 404 nicht gefundene Antwort.

Irgendwelche Ideen?

Antwort

0

Sie können Ihre PDF-Dateien als static Ressourcen dienen. Registrieren Sie das PDF-Verzeichnis über Spring Boot.

Die folgende Konfiguration registriert pdf Mime-Typ und konfiguriert statische Ressourcen.

@Configuration 
public class WebConfigurer implements EmbeddedServletContainerCustomizer { 

/** 
* Set up Mime types. 
*/ 
@Override 
public void customize(ConfigurableEmbeddedServletContainer container) { 
    MimeMappings mappings = new MimeMappings(MimeMappings.DEFAULT); 
    // IE issue, see https://github.com/jhipster/generator-jhipster/pull/711 
    mappings.add("html", "text/html;charset=utf-8"); 
    // CloudFoundry issue, see https://github.com/cloudfoundry/gorouter/issues/64 
    mappings.add("json", "text/html;charset=utf-8"); 

    mappings.add("pdf", "application/pdf"); 

    container.setMimeMappings(mappings); 
} 

    .... 
} 

// Register static resources 
@Configuration 
public class AppMvcConfiguration extends WebMvcConfigurerAdapter { 

@Override 
public void addResourceHandlers(ResourceHandlerRegistry registry) { 
    // Including all static resources. 

    registry.addResourceHandler("/assets/**", 
       "/css/**", 
       "/img/**", 
       "/js/**", 
       "/pdf/**" 
     ).addResourceLocations("/assets/", 
       "/css/", 
       "/img/", 
       "/js/", 
       "/pdf/**" 
).resourceChain(true) 
    .addResolver(new PathResourceResolver()); 

    super.addResourceHandlers(registry); 

} }

+0

Dank Anton für deine Antwort. Das Problem war der Server, nicht die Einstellungen. Als ich eine Datei erstellt habe, habe ich versucht, die URL an die Ansicht zu senden, und da die Datei beim Start des Servers nicht existierte, sende ich jetzt anstatt die URL zu senden, die komplette Datei mit der Antwort HttpServlet. – nick85

+0

@ nick85 Ich bin froh, dass du dein Problem gelöst hast. –