'spring boot lucy'에 해당되는 글 1건

  1. 2021.11.16 spring boot lucy filter 추가 + filter 추가

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 {

를 오버라이드 해서 구현 할 수 있습니다.

반응형
Posted by 질주하는구
,