티스토리 뷰

Skill/spring

Spring Boot Interceptor 설정

진열사랑 2020. 9. 2. 15:22

참조 : jaehun2841.github.io/2018/08/25/2018-08-18-spring-filter-interceptor/#2-webmvcconfigurationsupport-%EC%9D%B4%EC%9A%A9%ED%95%98%EC%97%AC-%EB%93%B1%EB%A1%9D

 

기존 소스  : WebMvcConfig.java와 MessageConverterConfiguration

@Configuration 
public class WebMvcConfig implements WebMvcConfigurer {

	@Override
    public void addInterceptors(InterceptorRegistry registry) { // 2019.11.12 추가 by ljpark
        registry.addInterceptor(new LoginCheckInterceptor())
                .addPathPatterns("/**")
                .excludePathPatterns("/login/**/") //로그인 쪽은 제외
        		.excludePathPatterns("/api/swagger-ui.html") //스웨거 쪽은 제외
        		.excludePathPatterns("/api/iiana/wtFlows/chk") //유량계 데이터 점검 제외
        		;

}

-------------------

/**
 * JSON에 XSS 방지 처리
 */
@Configuration
public class MessageConverterConfiguration extends WebMvcConfigurationSupport {
    /**
     * MappingJackson2HttpMessageConverter 를 커스터마이징 하여 응답 객체 이스케이프 문자 설정
     * @return 커스텀 설정이 적용된 컨버터
     */
	@Bean
	public HttpMessageConverter<?> htmlEscapingConverter() {
		ObjectMapper objectMapper = new ObjectMapper();
		objectMapper.getFactory().setCharacterEscapes(new HTMLCharacterEscapes()); // 
		objectMapper.registerModule(new JavaTimeModule());
		objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
		objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);

		MappingJackson2HttpMessageConverter htmlEscapingConverter =
				new MappingJackson2HttpMessageConverter();
		htmlEscapingConverter.setObjectMapper(objectMapper);

		return htmlEscapingConverter;
	}

	@Override
	protected void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
		converters.add(htmlEscapingConverter());
		super.addDefaultHttpMessageConverters(converters);  // default Http Message Converter  추가
	}
	
	
}

 

 

위와 같이 했을 때 Interceptor가 무력화되었다.

즉, MessageConverterConfiguration에 설정되어 있는 내용만 반영되었다.

 

참조 링크에는 Interceptor가 WebMvcConfigurationSupport를 상속받은 class에 정의되어 있다.

 

WebMvcConfigurationSupport 

하지만 커스텀을 진행하려고 한다면 무조건 @EnableWebMvc 애노테이션을 붙혀주거나 WebMvcConfigurationSupport를 상속받아야한다. (출처: https://wedul.site/349 [wedul])



댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함