본문 바로가기
Framework & Library/Spring Boot

[Spring Boot] : Servlet Filter

by 오주현 2022. 2. 22.
반응형

컨트롤러에서 로그인 여부를 판단하려면 체크 로직을 일일이 전부 다 넣어줘야 했다. 실제로 내가 진행했던 팀 프로젝트에서 그런 식으로 로그인 체크 여부를 판단했는데 이렇게 했을 때 문제가 있다.

 

일단 바꿔줘야 하는 부분이 많으면 노가다성 작업이 필요하다는 것과 적용해야 하는 부분이 많으면 역시 노가다성 작업이 들어가야 하는 것...그리고 혹시 모를 놓치는 부분이나 코드가 바뀌는 경우가 생길 수 있다는 문제이다.

 

이렇게 전체적으로 적용해야 하는 부분을 공통 관심사라고 한다.(cross - cutting concern) 이런 공통 관심사는 스프링의 AOP로도 해결할 수 있지만 웹과 관련된 공통 관심사는 서블릿 필터나 스프링 인터셉터를 활용하는 것이 좋다고 한다. 서블릿 필터나 스프링 인터셉터는 HttpServletRequest를 제공한다.

 

필터를 적용하면 HTTP 요청이 오면 WAS를 거쳐 필터를 거쳐 서블릿을 거쳐 컨트롤러가 호출된다. 이건 로그인한 사용자의 경우이다. 하지만 비로그인자가 요청하면 HTTP 요청을 거쳐 WAS를 거쳐 필터에서 적절하지 않은 요청이라 판단하고 서블릿을 호출해 주지 않게 된다. 때문에 로그인 여부를 체크하기에 딱 좋은 것이다.

 

필터는 체인으로 구성되어 중간에 필터를 자유롭게 추가할 수 있다고 한다. 필터 1, 2, 3을 넣는 등 자유롭게 추가가 가능하다.

 

필터 인터페이스는 싱글톤으로 되어있어 사용에 주의가 필요하다.


스프링 MVC 2편 - 백엔드 웹 개발 활용 기술을 참고하여 공부하였습니다.

반응형

댓글