Springboot

인터셉터 처리

25G 2021. 7. 26. 15:03

 

톰켓은 필터를 가지고 있다. 인증처리를 할 때는 필터를 만들면 된다

스프링이란는 성이 만들어지려면 조건이 필요하다 바로 톰캣(서버)이라는 더 큰 범위 안에 스프링이라는 성이 들어갈 수 있는 것이다. 그래서 1차 필터는 톰캣이 들고 있다. 외부에 접근이 들어오면 톰켓이 1차적으로 검열을 할 수 있다(톰캣은 전처리밖에 못함 EX) 중국에서 오는 IP를 다 막고 싶다거나 하는 공통적인 로직). 톰캣 파일 중에 WEB.XML 파일이 1차 검열하는 필터 파일이라고 생각하면 된다.

이 톰캣을 통과해야 스프링 안으로 들어오는데 스프링의 첫 번째 관문에서 디스페처를 만난다. 이 디스페처가 요청을 받으면 IOC컨테이너를 뒤져서 요청받은 URI를 응답할 수 있는 컨트롤러 함수를 실행시킨다. 이때 이 함수가 실행되기 직전에 AOP(공통 관심사) 처리할 수 있다. (전처리, 후처리가 가능하다)

 

리플렉션

미리 함수를 만들어 놓는 것이 아닌 속이 빈 함수에 틀만 갖춰져 놓은 함수가 있다고 가정해보자.  미리 함수를 만들 수 없는 경우가 생겼을 때 함수를 정해놓을 수 없으니까 사용자에게 함수를 호출하는 순간에 동적으로 함수가 완성되도록 할 수 있다.

미리 컴파일이 돼있는 것이 아닌 실시간으로 어떤 요청이 들어올 때 클래스 안에 있는 필드를 분석해주는 것이다. 동적으로.

 

1. 톰켓 -필터

 

2. 스프링 -(리플렉션 통한 aop)

 

3. 인터셉터(필터+ 리플렉션 통한 AOP)

 

4. 시큐리티(인터셉터+보안)(스프링 현 최종 기술)

위 1과 2의 차이는 필터는 입구에서 동작하는 것이고 AOP는 함수의 전후에 동작하는 것이다.

 

 

인터셉터

인터셉터는 AOP를 기반으로 만들어진 라이브러리이다

인터셉터는 컨트롤러의 전처리 후처리를 관리할 수 있다.

 

 

 

첫 번째 함수가 함수 실행 직전에 공통 관심사 제어

 

두 번째가 실행 이후에 제어

 

세 번째가 함수 종료 후 제어

첫번째 함수 오버라이딩

간단하게 세션 체크 후에 false 반환하면 lgin페이지로 보낸다. 하지만 위 클래스는 메모리에 등록되지 않아서

새로운 파일을 하나 더 만들어야 한다.

WebMvcConfigurer을 상속받고 인터셉터 처리된 파일을 메모리에 띄운다.

/post에 관련된 모든 주소가 블로킹 당하게 할 수 있다.

 

인터셉터를 사용할 때 가장 중요한점은 설계를 할때 주소 구분해서 잘 짜야한다.