유튜브에서 스프링시큐리티를 심화교육하면서 조금더 레벨업 하고자 한다.
IDE : IntelliJ
언어 : Java 8
스프링부트 버전 : 2.7.13
DB : MySQL
빌드관리 도구 : Maven
OS : iOS
참고유튜브 : 메타코딩
필터를 설정하면 어떤 순서로 진행이 되는지 확인해보자
filter 패키지 하위로 MyFilter1 클래스 생성
Filter를 오버라이딩해준다.
ctrl+o를 눌러서 doFilter를 오버라이딩
테스트를 진행하기 위해서 콘솔에 filter 1을 찍어보자
public class MyFilter1 implements Filter {
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain)
throws IOException, ServletException {
System.out.println("filter 1");
filterChain.doFilter(servletRequest, servletResponse);
}
}
MyFilter1을 복사해서 MyFilter2를 생성
config 패키지 하위로 FilterConfig 생성 후
@Configuration 어노테이션을 추가해서 의존성주입을 해주고
FilterRegistrationBean으로 각각 Myfilter 1과 2를 넣어준다.
bean.addUrlPatterns로 모든 패턴에대해 접근을 허용하고
bean.setOrder로 필터가 실행되는 순서를 정해준다.
@Configuration
public class FilterConfig {
@Bean
public FilterRegistrationBean<MyFilter1> filter1(){
FilterRegistrationBean<MyFilter1> bean = new FilterRegistrationBean<>(new MyFilter1());
bean.addUrlPatterns("/*");
bean.setOrder(1); //낮은 번호가 필터중에서 가장 먼저 실행됨
return bean;
}
@Bean
public FilterRegistrationBean<MyFilter2> filter2(){
FilterRegistrationBean<MyFilter2> bean = new FilterRegistrationBean<>(new MyFilter2());
bean.addUrlPatterns("/*");
bean.setOrder(2); //낮은 번호가 필터중에서 가장 먼저 실행됨
return bean;
}
}
설정한대로 filter 1이 먼저 실행되고 filter 2가 나중에 실행되게 된다.
그렇다면 SecurityConfig에서 필터를 넣었을때는 어떠한 순서대로 동작을 하게 되는것일까?
MyFilter1을 복사해서 MyFilter3를 만들어준 후
SecurityConfig에 아래와 같이 추가해준다.
http.addFilterBefore(new MyFilter3(), BasicAuthenticationFilter.class);
그 후 서버를 실행해서 확인해보면 시큐리티 필터가 먼저 거쳐진 후에 순서에 맞게 출력이 되는것 을 확인할 수 있다.
'프로젝트 > SpringSecurity' 카테고리의 다른 글
[Spring Security] 13. JWT를 이용해 로그인 테스트하기 (0) | 2023.07.17 |
---|---|
[Spring Security] 12. JWT를 이용하기위한 임시토큰만들어 테스트해보기 (0) | 2023.07.12 |
[Spring Security] 10. JWT를 이용하기위한 security 설정 (0) | 2023.07.11 |
[Spring Security] 9. OAuth 네이버로그인 (0) | 2023.07.07 |
[Spring Security] 8. OAuth 페이스북로그인 (0) | 2023.07.06 |
댓글