2016-08-01 2 views
0

필자는보기의 데이터로 PDF 양식을 채울 응용 프로그램을 개발 중입니다. 스프링 부트 보안을 설정하기 전에 모든 것이 잘 작동하고있었습니다.스프링 부트 보안 : 새 PDF에 대한 액세스

이 PDF를 만드는 폴더는 공개로 설정되어 있습니다. 응용 프로그램을 시작하면 시작하기 전에 작성된 모든 PDF에 액세스 할 수 있지만 새 파일을 만들면 (파일 시스템에서 파일을 열고 정확하게 작성했는지 확인할 수 있음)이 파일에 대한 요청으로 나에게 404 대답을 찾을 수 없습니다.

아이디어가 있으십니까?

답변

0

static 리소스로 PDF 파일을 제공 할 수 있습니다. 봄 부팅을 통해 pdf 디렉토리를 등록하십시오.

다음 구성은 pdf 마임 유형을 등록하고 정적 리소스를 구성합니다.

@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

답변 주셔서 감사 안톤. 문제는 서버가 아니라 설정입니다. 파일을 만들 때보기에 URL을 보내려고했는데 서버가 시작될 때 파일이 존재하지 않으므로 이제 sendig 대신 URL을 사용하여 HttpServlet 응답을 사용하여 전체 파일을 보냅니다. – nick85

+0

@ nick85 문제를 해결해 주어서 기쁩니다. –

관련 문제