본문 바로가기

웹개발/스프링

6. interceptor 로그인 처리

이전시간에 게시글을 작성하면 보여질 목록 페이지를 구현 하였습니다.

이번시간에는 로그인을 하지 않으면 로그인 페이지로 돌아가게끔 하는 인터셉터 기능을 구현 해보도록 하겠습니다.

 

인터셉터 기능을 이용하기 전에 먼저 설정을 해줘야 하는데 설정은 설정편에서 다루었습니다.

 

설정편 게시글로 이동하기

 

interceptor 설정하기

인터셉터 기능을 사용하기 위해서는 servlet-acvive.xml 파일에 인터셉터 설정 정보를 등록해주어야 합니다. 1) servlet-active.xml : board 풀더안에 있는 모든 jsp 파일을 인터셉터 처리한다. : 제외하고 인

minwoo-developer.tistory.com

 


[ 1. 인터셉터(Interceptor) 란? ]

 

특정 URL 요청시 Controller로 가는 요청을 가로채는 역할을 한다.

 

[ 2. Interceptor와 JSP Filter의 차이 ]

 

- 공통점 : 두개 모두 Controller로 들어가는 요청을 가로채어 특정 작업을 수행 하기 위한 용도로 사용된다.

- 차이점 : 케어할 수 있는 영역(범위)가 다르다. Filter는 같은 웹 어플리케이션 내에서만 접근이 가능하며, Interceptor의 경우 스프링에서 관리되기 때문에 스프링 내의 모든 객체에 접근이 가능하다.

         -> JSP Filter의 경우 주로 한글의 처리에 이용된다.

         -> Interceptor의 경우 로그인 처리에 이용된다.

         -> 로그인 처리에 이용 : 만약 인터셉터를 이용하지 않고, 로그인 처리를 한다면, 게시물을 작성("board/writeContentPage"),

                                                    게시물 수정 ("board/updateContentPage"), 게시물삭제("board/deleteContentPage")등 모든 요청마다

                                                    Controller에서 session을 통한 로그인 정보가 남아 있는지를 확인하는 코드를 중복해서 작성 하여야 한다

                                                    인터셉터를 이용하면 A, B, C 작업을 할 경우에는 ~~Interceptor를 먼저 수행해 session에서 

                                                    로그인 정보가 있는지 확인해 주는 역할을 한다면, 중복 코드가 확 줄어들 수 있을 것이다.

                                                    이러한 장점 떄문에 Interceptor를 사용한다.

 

[ 3. Interceptor를 지원하는 interface와 class, method ]

 

: Spring 에서 인터셉터를 지원하기 위해서

        - HandlerInterceptor interface

        - HandlerInterceptorAdapter 추상 클래스를 지원한다 => 위의 interface를 사용하기 쉽게 구현해 놓은 추상 클래스 이다.

             => 이떄, HandlerInterceptorAdaptor는 3개의 Method를 제공한다. 이 3개의 Method를 Overrride 해서 우리가 이용 할 수 있다.

                  1) public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) : Controller로

                      요청이 들어가기 전에 수행된다.

                      1-1) request, response, handler 등의 매개변수를 이용가능한데 우리가 아는 HttpServletRequest, HttpServletResponse,

                            이고, 나머지 하나는 이 preHandle() 메서드를 수행하고 수행될 컨트롤러 메서드에 대한 정보를 담고 있는 handle이다.

                  2) public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, 

                     ModelAndView modelAndView) : 컨트롤러의 메서드의 처리가 끝나 return 되고 화면을 띄워주는 처리가 되기 직전에

                     이 메서드가 수행된다.

 


1) AuthenticationInterceptor.java 파일 생성

10행 : extends HandlerInterceptorAdapter : 해당하는 클래스를 상속 받는다.

12행 : @Override : 해당 하는 메서드를 상속 받는다.

 

2) 확인하기

로그인 하지 않고 writeContentPage로 이동하려고 한다면 자동으로 로그인 페이지로 넘어간다.

이렇게 넘어가진다.

다음시간에는 본격적으로 게시판 만들기에 돌입해보자