ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Interceptor
    Java/Spring 2018. 8. 24. 16:29
    반응형

    /board 이하의 모든 URL들에 대해 인증된 회원만 접근하고자할때,


    Filter 기능을 사용해서 Session 인증 처리를 할수 있지만, Spring Bean 주입 받을 필요가 있을 경우 Interceptor를 이용한다.


    Adapter에서 Controller로 보낼때, -> preHandle

    Controller에서 Adapter로 받을 때 -> PostHandle

    JSP가 Return되려 할때 -> AfterComplet


    주로 Interceptor는 preHandle에서 쓰인다. -> Session검증, 정보 검증


    Interceptor는 bool 로 되있다.


    return 값이 true면 진행하고 false면 진행하지 않는다. 일종의 검문소와 같다고 볼 수 있다.


    SessionInterceptor라는 HandlerInterceptorAdapter 클래스를 상속 받는 클래스를 작성한다.


    package com.ktds.common;

    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpSession;

    import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;

    import com.ktds.member.vo.MemberVO;

    public class SessionInterceptor extends HandlerInterceptorAdapter { // Interceptor 사용
        
        @Override
        public boolean preHandle(
                    HttpServletRequest request
                    , HttpServletResponse response
                    , Object handler) // handler == Controller
                throws Exception {
            
            HttpSession session = request.getSession();
            MemberVO member = (MemberVO) session.getAttribute("_USER_");
            
            if ( member == null ) { // session이 없을 시
                response.sendRedirect("/HelloSpring/member/login"); // login Page로 이동
                return false;
            }
            
            return true;
        }
        
    }


    applicationContext.xml에서도 Interceptor Bean을 생성한다.


    <mvc:interceptors>
    <mvc:interceptor>
    <mvc:mapping path="/board/**/"/> <!-- /board 아래 모든 url -->
    <bean id="sessionInterceptor"
    class="com.ktds.common.SessionInterceptor">
    </bean>
    </mvc:interceptor>
    </mvc:interceptors>


    mvc:excludemapping을 이용하면 설정된 path는 예외로 구분된다.


    반응형

    'Java > Spring' 카테고리의 다른 글

    Logging  (0) 2018.08.27
    Static Resources  (0) 2018.08.24
    bean config 설정 분리  (0) 2018.08.24
    Application 예외 처리  (0) 2018.08.24
    File - Upload / Download  (0) 2018.08.23

    댓글

Designed by Tistory.