[SpringSecurity] OncePerRequestFilter과 GenericFilterBean

CodeKong의 기술 블로그·2024년 1월 5일
1

SPRING BOOT

목록 보기
21/24
post-thumbnail

Spring Security Filter를 사용하다보면 OncePerRequestFilter를 사용하는 코드와 GenericFilterBean를 사용하는 코드가 보입니다.


사용 배경

먼저 사용 배경에 대해서 얘기해 보겠습니다.

  1. 클라이언트로부터 요청이 오게되면 먼저 Filter Chain에 등록된 Filter1과 Filter2를 거려 API 1이 실행됩니다.
  2. API 1이 특정 URL로 리다이렉트 되는 API라면 302 code로 응답을 보내게 됩니다.
  3. 클라이언트는 302 code를 보고 재 요청으로 보내게 되고 다시 Filter1과 Filter2를 거쳐 API 2를 실행하게됩니다.

이런 과정에서 Filter 1과 Filter 2를 다시 거쳐야하는 불편함이 존재하게 되고

OncePerRequestFilter는 그 중복과정을 제거해주는 역할을 합니다.


두 구현방법은 어떤 차이가 있는지 궁금하여 찾아보았습니다.

GenericFilterBean

먼저 GenericFilterBean입니다.
기존의 Filter를 상속받아 기능을 추가한 추상 클래스입니다.

OncePerRequestFilter

다음은 OncePerRequestFilter입니다.
간단히 보아도 AlreadyFilteredAttribute라는 문구가 보입니다.

잘보시면 애초에 GenericFilterBean을 상속함을 알 수 있습니다.

0개의 댓글