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 메소드를 이용해서 추가 할 수 있습니다.
1 2 3 4 5 6 7 8 9 10 | <code class = "hljs typescript" ><span class = "hljs-meta" > @Bean </span> <span class = "hljs-keyword" > public </span> FilterRegistrationBean <span class = "hljs-function" ><span class = "hljs-title" >filterRegistrationBean</span>(<span class = "hljs-params" ></span>)</span> { FilterRegistrationBean filterRegistration = <span class = "hljs-keyword" > new </span> FilterRegistrationBean<>(); filterRegistration.setFilter(<span class = "hljs-keyword" > new </span> XssEscapeServletFilter()); filterRegistration.setOrder(<span class = "hljs-number" > 1 </span>); filterRegistration.addUrlPatterns(<span class = "hljs-string" > "/*" </span>); <span class = "hljs-comment" > //filterRegistration.setUrlPatterns(Arrays.asList("/*"));</span> <span class = "hljs-keyword" > return </span> filterRegistration; } </code> |
해당 메소드의 위치는 @SpringBootApplication 클래스 하위에 위치해도 되고
1 2 3 4 5 6 7 8 9 10 11 12 13 | <code class = "hljs java" ><span class = "hljs-meta" > @Configuration </span> <span class = "hljs-keyword" > public </span> <span class = "hljs-class" ><span class = "hljs-keyword" > class </span> <span class = "hljs-title" >XssConfig</span> <span class = "hljs-keyword" > implements </span> <span class = "hljs-title" >WebMvcConfigurer</span> </span>{ <span class = "hljs-meta" > @Bean </span> <span class = "hljs-function" ><span class = "hljs-keyword" > public </span> FilterRegistrationBean <span class = "hljs-title" >filterRegistrationBean</span><span class = "hljs-params" >()</span> </span>{ FilterRegistrationBean filterRegistration = <span class = "hljs-keyword" > new </span> FilterRegistrationBean<>(); filterRegistration.setFilter(<span class = "hljs-keyword" > new </span> XssEscapeServletFilter()); filterRegistration.setOrder(<span class = "hljs-number" > 1 </span>); filterRegistration.addUrlPatterns(<span class = "hljs-string" > "/*" </span>); <span class = "hljs-comment" > //filterRegistration.setUrlPatterns(Arrays.asList("/board/*"));</span> <span class = "hljs-keyword" > return </span> filterRegistration; } } </code> |
와 같이 추가 @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 를 사용하는 경우 실행순서를 지정 하려면
1 2 3 4 5 | <code class = "hljs" ><span class = "hljs-variable" > @WebFilter </span>(filterName=<span class = "hljs-string" > "filter1" </span>) public class Filter1 implements Filter {} <span class = "hljs-variable" > @WebFilter </span>(filterName=<span class = "hljs-string" > "filter2" </span>) public class Filter2 implements Filter {} </code> |
<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 후
1 2 3 | <code class = "hljs java" ><span class = "hljs-meta" > @Override </span> <span class = "hljs-function" ><span class = "hljs-keyword" > public </span> <span class = "hljs-keyword" > void </span> <span class = "hljs-title" >doFilter</span><span class = "hljs-params" >(ServletRequest request, ServletResponse response, FilterChain chain)</span> <span class = "hljs-keyword" > throws </span> IOException, ServletException </span>{ </code> |
를 오버라이드 해서 구현 할 수 있습니다.
'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 |