톰켓은 필터를 가지고 있다. 인증처리를 할 때는 필터를 만들면 된다
스프링이란는 성이 만들어지려면 조건이 필요하다 바로 톰캣(서버)이라는 더 큰 범위 안에 스프링이라는 성이 들어갈 수 있는 것이다. 그래서 1차 필터는 톰캣이 들고 있다. 외부에 접근이 들어오면 톰켓이 1차적으로 검열을 할 수 있다(톰캣은 전처리밖에 못함 EX) 중국에서 오는 IP를 다 막고 싶다거나 하는 공통적인 로직). 톰캣 파일 중에 WEB.XML 파일이 1차 검열하는 필터 파일이라고 생각하면 된다.
이 톰캣을 통과해야 스프링 안으로 들어오는데 스프링의 첫 번째 관문에서 디스페처를 만난다. 이 디스페처가 요청을 받으면 IOC컨테이너를 뒤져서 요청받은 URI를 응답할 수 있는 컨트롤러 함수를 실행시킨다. 이때 이 함수가 실행되기 직전에 AOP(공통 관심사) 처리할 수 있다. (전처리, 후처리가 가능하다)
리플렉션
미리 함수를 만들어 놓는 것이 아닌 속이 빈 함수에 틀만 갖춰져 놓은 함수가 있다고 가정해보자. 미리 함수를 만들 수 없는 경우가 생겼을 때 함수를 정해놓을 수 없으니까 사용자에게 함수를 호출하는 순간에 동적으로 함수가 완성되도록 할 수 있다.
미리 컴파일이 돼있는 것이 아닌 실시간으로 어떤 요청이 들어올 때 클래스 안에 있는 필드를 분석해주는 것이다. 동적으로.
1. 톰켓 -필터
2. 스프링 -(리플렉션 통한 aop)
3. 인터셉터(필터+ 리플렉션 통한 AOP)
4. 시큐리티(인터셉터+보안)(스프링 현 최종 기술)
위 1과 2의 차이는 필터는 입구에서 동작하는 것이고 AOP는 함수의 전후에 동작하는 것이다.
인터셉터
인터셉터는 AOP를 기반으로 만들어진 라이브러리이다
인터셉터는 컨트롤러의 전처리 후처리를 관리할 수 있다.
첫 번째 함수가 함수 실행 직전에 공통 관심사 제어
두 번째가 실행 이후에 제어
세 번째가 함수 종료 후 제어
간단하게 세션 체크 후에 false 반환하면 lgin페이지로 보낸다. 하지만 위 클래스는 메모리에 등록되지 않아서
새로운 파일을 하나 더 만들어야 한다.
WebMvcConfigurer을 상속받고 인터셉터 처리된 파일을 메모리에 띄운다.
/post에 관련된 모든 주소가 블로킹 당하게 할 수 있다.
인터셉터를 사용할 때 가장 중요한점은 설계를 할때 주소 구분해서 잘 짜야한다.
'Springboot' 카테고리의 다른 글
Spring boot/JPA 사용해서 이미지 업로드 구현 (8) | 2021.07.28 |
---|---|
JPA Paging 구현 연습 (0) | 2021.07.27 |
visual studio code에서 Spring boot/JPA개발환경 설정 (0) | 2021.07.21 |
Exception처리(기본개념) (0) | 2021.07.20 |
Spring boot/JPA 로 블로그만들기. 코멘트 기능 구현(댓글) (3) | 2021.07.19 |