ABAP DUMP ERROR 24시

[SpringMVC 2편] 필터 vs 인터셉터 (로그인 적용) 본문

[WEB]Back-end/Spring MVC

[SpringMVC 2편] 필터 vs 인터셉터 (로그인 적용)

이운형 2022. 2. 28. 20:58
반응형

# 인프런 김영한의 스프링 MVC 2편 - 백엔드 웹 개발 핵심 기술 개인적으로 정리한 글입니다.

 

 

 

정리


 

1. 필터와 인터셉터가 왜 필요해?

=> 로그인 한 사용자만 상품 관리 페이지에 들어갈 수 있어야 하는데, URL만 고치면 

로그인 하지 않은 사용자도 다음 URL을 직접 호출하면 상품 관리 화면에 들어갈 수 있다는 점.

// 엔진에는 석유만 들어가야 하는데.. 철가루도 들어간다면?

 

즉,

모든 컨트롤러 로직에 공통으로 로그인 여부를 확인해야 한다.

//철가루가 들어가지 않도록 막아야한다,

 

 

모든 컨트롤러 로직에 인증에 대해 제한을 걸기위해 필터와 인터셉터가 작동한다.

// 오일필터와 연료필터같은 역할!

 

#애플리케이션 여러 로직에서 공통으로 관심이 있는 있는 것공통 관심사(cross-cutting concern)라고 한다

특히 웹에서는 HTTP의 헤더나  URL의 정보를 통해 공통 관심사를 처리하기 위해서는

AOP 대신 서블릿 필터나 스프링 인터셉트를 사용하는 것이 좋다.

 

2. 필터와 스프링 인터셉터의 차이점

 

둘다 웹과 관련된 공통 관심 사항을 처리하지만, 적용되는 순서와 범위, 그리고 사용방법이 다르다.

 

서블릿 필터가 서블릿이 제공하는 기술

스프링 인터셉터는 스프링 MVC가 제공하는 기술

 

서블릿 필터는 WAS와 서블릿 사이에서 작용

스프링 인터셉터는 서블릿과 컨트롤러 사이에서 작용.

 

서블릿 필터는 init, doFilter, distory를 가지고있는 Filter interface 사용.

스프링 인터셉터는 preHandle, postHandle, afterCompletion을 가지고있는 HandlerInterceptor 사용.

 

서블릿 필터의 경우 단순하게 doFilter() 하나만 제공된다.

스프링 인터셉터는 컨트롤러 호출 전( preHandle ), 호출 후( postHandle ), 요청 완료 이후( afterCompletion )와 같이 단계적으로 잘 세분화 되어 있다.

 

서블릿 필터의 경우 단순히 request , response 만 제공했지만,

스프링 인터셉터는 어떤 컨트롤러( handler )가 호출되는지 호출 정보도 받을 수 있다.

그리고 어떤 modelAndView 가 반환되는지 응답 정보도 받을 수 있다.

 

 

 

 

반응형
Comments