-
Spring Security JWT - Filter 등록Framework & Library/Spring Security 2021. 10. 8. 11:16
Filter 클래스 생성
public class MyFilter01 implements Filter { @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { System.out.println("필터01"); filterChain.doFilter(servletRequest, servletResponse); } }
ㆍ filter 패키지를 만든 후 MyFilter01 클래스를 생성한다.
ㆍ MyFilter01 클래스가 필터의 역할을 하기 위해서는 Filter 인터페이스를 구현하는 형태여야 한다.
ㆍ doFilter() 메서드는 해당 필터와 매칭 된 url에 요청이 들어올 때마다 호출되는 메서드이며, 이 메서드에 필터가 수행할 작업을 작성한다.
ㆍ MyFilter01 클래스는 단순히 "필터 01"이라는 단어가 출력되는 필터이다.
ㆍ 추가로, filterChain.doFilter() 메서드는 요청에 대한 필터링 결과를 다음 필터에 전달하는 역할을 한다.
필터 등록
FilterRegistrationBean을 이용한 필터 등록
@Configuration public class FilterConfig { @Bean public FilterRegistrationBean<MyFilter01> filter01() { FilterRegistrationBean<MyFilter01> registrationBean = new FilterRegistrationBean<>(new MyFilter01()); // MyFilter01 필터 등록 registrationBean.addUrlPatterns("/*"); // 모든 url에 대해서 필터를 설정 registrationBean.setOrder(0); // 필터 중에서 가장 먼저 실행(낮은 번호를 가질 수록 우선순위 높음) return registrationBean; } }
ㆍ config 패키지 내에 FilterConfig 클래스를 만들고 위와 같은 코드를 작성한다.
ㆍ FilterRegistrationBean<MyFilter01> 타입으로 filter01() 메서드를 만들고 @Bean 애너테이션을 통해 IoC에 등록을 해준다.
ㆍ FilterRegistrationBean<MyFilter01> 객체에 MyFiler01 필터를 등록한 후 url과 우선순위 설정을 함으로써 필터 등록을 마무리한다.
addFilterBefore을 이용한 필터 등록
ㆍ SecuritConfig 클래스 내에 있는 configure() 메서드에 위 사진에 표시된 코드를 추가한다.
ㆍ addFilterBefore() 메서드의 첫 번째 매개변수는 등록할 필터 객체를 집어넣고 두 번째 매개변수는 실행 기준이 될 필터이다.
ㆍ 즉, SecurityContextPersistenceFilter가 실행되기 이전에 MyFilter를 실행시키겠다는 의미이다.
ㆍ SecurityContextPersistenceFilter는 시큐리티 필터 체인에 등록된 수많은 필터 중 하나로 SecurityContextPersistenceFilter 필터가 아닌 다른 필터를 집어넣어도 된다.
addFilterAfter를 이용한 필터 등록
ㆍ addFilterBefore() 메서드와 마찬가지로 addFilterAfter() 메서드를 이용해서 필터 등록을 할 수 있다.
ㆍ 위 코드와 같은 경우 SecurityContextPersistenceFilter가 실행된 후에 MyFilter를 실행시키겠다는 의미이다.
728x90'Framework & Library > Spring Security' 카테고리의 다른 글
Spring Security JWT - JWT를 위한 로그인 시도 (0) 2021.10.08 Spring Security JWT - 임시 토큰을 통한 테스트 (0) 2021.10.08 Spring Security JWT - 시큐리티 설정 (0) 2021.10.07 Spring Security JWT - 프로젝트 생성 및 환경설정 (0) 2021.10.07 Spring Security - 네이버 로그인 (0) 2021.10.05