ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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를 실행시키겠다는 의미이다.


     

    GitHub - qlsdud0604/spring-security-jwt

    Contribute to qlsdud0604/spring-security-jwt development by creating an account on GitHub.

    github.com

     

    728x90

    댓글

Designed by Tistory.