spring boot lucy filter 추가 + filter 추가 spring boot 기반으로 작업 시 lucy filter를 추가 하는 경우 아래와 같이 작업 할 수 있습니다. xml기반의 경우 web.xml에
<filter>
<filter-name>xssEscapeServletFilter</filter-name>
<filter-class>com.navercorp.lucy.security.xss.servletfilter.XssEscapeServletFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>xssEscapeServletFilter</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
와 같이 추가 해주면 되는데 spring boot의 경우 filterRegistrationBean 메소드를 이용해서 추가 할 수 있습니다.
@Bean
public FilterRegistrationBean filterRegistrationBean() {
FilterRegistrationBean filterRegistration = new FilterRegistrationBean<>();
filterRegistration.setFilter(new XssEscapeServletFilter());
filterRegistration.setOrder(1);
filterRegistration.addUrlPatterns("/*");
//filterRegistration.setUrlPatterns(Arrays.asList("/*"));
return filterRegistration;
}
해당 메소드의 위치는 @SpringBootApplication 클래스 하위에 위치해도 되고
@Configuration
public class XssConfig implements WebMvcConfigurer {
@Bean
public FilterRegistrationBean filterRegistrationBean() {
FilterRegistrationBean filterRegistration = new FilterRegistrationBean<>();
filterRegistration.setFilter(new XssEscapeServletFilter());
filterRegistration.setOrder(1);
filterRegistration.addUrlPatterns("/*");
//filterRegistration.setUrlPatterns(Arrays.asList("/board/*"));
return filterRegistration;
}
}
와 같이 추가 @Configuration 를 정의해서 추가 할 수 있습니다.
-- 설정 메소드 간단 설명
setOrder = 여러개의 필터가 사용되는 경우 필터 적용 순서를 정의 합니다.
addUrlPatterns = 필터가 적용될 url패턴을 하나식 추가 합니다.
setUrlPatterns = 필터가 적용될 url패턴을 여러건 한꺼번에 추가 합니다.
또한 자신이 만든 filter를 추가 하려는 경우 아래의 2가지 방법으로 추가 할 수 있습니다.
1) extends GenericFilterBean 후
@Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException {
를 오버라이드 해서 구현 할 수 있습니다.
(
해당 필터 클래스 상단에 @WebFilter(urlPatterns = "/*") 를 추가 해주고 @ServletComponentScan을 이용해서 filterRegistrationBean에서 선언하지 않고 필터 설정까지 한번에 추가 가능 합니다. @WebFilter 를 사용하는 경우 실행순서를 지정 하려면
@WebFilter(filterName="filter1")
public class Filter1 implements Filter {}
@WebFilter(filterName="filter2")
public class Filter2 implements Filter {}
<filter-mapping>
<filter-name>filter1</filter-name>
<url-pattern>/url1/*</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>filter2</filter-name>
<url-pattern>/url2/*</url-pattern>
</filter-mapping>
와 같이 web.xml 을 이용해줘야 합니다.
)
2) implements Filter 후
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
를 오버라이드 해서 구현 할 수 있습니다.
'spring' 카테고리의 다른 글
spring-boot jdbc database 초기화 schema.sql, data.sql (0) | 2022.03.09 |
---|---|
spring boot 실행시 DB 연결에러 (0) | 2021.11.25 |
spring bean validation 어노테이션 (0) | 2021.06.22 |
junit 테스트 시 failed to lazily initialize a collection of role 에러 발생 (0) | 2021.06.10 |
spring4 junit5 사용시 spring 설정파일 로드 (0) | 2021.06.10 |