Today
-
Yesterday
-
Total
-

ABOUT ME

-

  • Spring Boot | 인터셉터(Interceptor) 적용하기
    ▼ Backend/스프링 (Spring) 2021. 8. 4. 14:55
    반응형

    ▶ 인터셉터(Interceptor)

    컨트롤러(Controller)의 핸들러(Handler)를 호출하기 전 또는 후에 요청(HttpServletRequest)과

    응답(HttpServletResponse)을 가로채는 역할

     

    사용자 인증이 되어 있어야 사용 가능한 페이지에 주로 사용된다.

    예) 웹 사이트를 사용하다가 마이페이지나 개인적인 메뉴에 접근할 경우 요청을 가로채 로그인이 되어 있지 않으면 로그인 페이지로 이동 시키는데 많이 사용된다.

     

    LoginInterceptor

    HandlerInterceptor를 상속받아 interface 메서드를 구현한다.

     

    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import org.springframework.web.context.request.RequestAttributes;
    import org.springframework.web.context.request.RequestContextHolder;
    import org.springframework.web.servlet.HandlerInterceptor;
    import org.springframework.web.servlet.ModelAndView;
    
    public class LoginInterceptor implements HandlerInterceptor {
    
        // 클라이언트의 요청을 컨트롤러에 전달하기 전에 호출된다. 여기서 false를 리턴하면 다음 내용(Controller)을 실행하지 않는다.
        @Override
        public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        	System.out.println("#Interceptor PreHandle Method Req URI : " + request.getRequestURI());
            /*
              이 영역에서 인증여부를 판단하여 로그인 페이지로 보낼 로직을 구현한다.
            */
            
            return true;
        }
     
        // 클라이언트의 요청을 처리한 뒤에 호출된다. 컨트롤러에서 예외가 발생되면 실행되지 않는다.
        @Override
        public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler,ModelAndView modelAndView) throws Exception {
            // TODO Auto-generated method stub
        }
     
        // afterCompletion : 클라이언트 요청을 마치고 클라이언트에서 뷰를 통해 응답을 전송한뒤 실행이 된다. 뷰를 생성할 때에 예외가 발생할 경우에도 실행이 된다.
        @Override
        public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
            // TODO Auto-generated method stub
        }
    }

     

    WebConfig

    WebMvcConfigurer를 상속 받아 addInterceptors 메서드를 구현한다.

     

    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
    import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
    
    import com.melon.boot.interceptor.LoginInterceptor;
    
    @Configuration
    public class WebConfig implements WebMvcConfigurer {
        @Override
        public void addInterceptors(InterceptorRegistry registry) {
            registry.addInterceptor(new LoginInterceptor()) // LoginInterceptor
                .addPathPatterns("/**") // 적용할 URL (모든 URL 적용)
                .excludePathPatterns("/login/**"); // 제외할 URL (/login/하위로 오는 URL 제외)
        }
    }

     

    반응형

    댓글

Designed by Tistory.