설 연수
하하호홓
설 연수
전체 방문자
오늘
어제
  • 분류 전체보기 (231)
    • Back-End (2)
      • Java (20)
      • JSP (13)
      • Spring (18)
      • Kotlin (0)
      • node.js (0)
    • Front-End (68)
      • JavaScript (19)
      • jQuery (39)
      • Angular (4)
      • HTML (5)
    • Dev-Ops (12)
      • Linux, Cloud (5)
      • docker, k8s (5)
      • ElasticSeach (2)
    • Other (33)
      • OOP (3)
      • 알고리즘 (2)
      • DB (12)
      • Git (1)
      • Swift (4)
    • Backup (65)

블로그 메뉴

    공지사항

    인기 글

    태그

    • angular callback
    • mongodb
    • angular2
    • RESTful
    • CORS
    • Kafka
    • angular4
    • 404 error
    • 크로스도메인
    • Angular
    • 패스트캠퍼스
    • INVALID
    • flex
    • jquery invalid
    • jOOQ
    • Redis
    • docker
    • angular 콜백
    • MYSQL
    • page not found

    최근 댓글

    최근 글

    티스토리

    hELLO · Designed By 정상우.
    설 연수

    하하호홓

    Back-End/Spring

    Spring - Interceptor 를 사용한 login 처리

    2012. 4. 27. 11:25

    일반적인 사용자 외에 직접 주소를 쳐서 접근 하는 사용자를 방지하기 위하여

    매번 해당되는 요청시 마다 login검사를 해줘야 하는 경우가 있다.

     

    이 경우 login검사를 모든 컨트롤러에서 해주기엔 게시판 하나만 있는 사이트라면 모를까

    다수의 기능을 가지고 있는 사이트에서라면 굉장히 애로사항이 꽃을 피울만한 일이다.

     

    이런 경우에 login검사 처리를 Spring에서 제공하는 Interceptor를 사용하여 한번에 해결 가능하다

     

    InterCeptor에서 제공하는 3가지 메소드는 각각 개입하는 시점이 다르다.

    • preHandle - Controller 실행 요청전
    • postHandle - view(jsp)로 forward되기 전에
    • afterCompletion - 끝난뒤

    login 검사를 해야 될 시점은 Dispatcher가 해당 controller로 이어주기 전에 해야 되므로 preHandle메소드를 사용하여 처리하겠다.

    HandlerInterceptorAdapter을 상속받은 LoginCheckInterceptor 을 만든다.

     


    public class LoginCheckInterceptor extends HandlerInterceptorAdapter {

     

     @Override
     public boolean preHandle(HttpServletRequest request,
       HttpServletResponse response, Object handler) throws Exception {
      // TODO Auto-generated method stub
      

      // session검사
      HttpSession session = request.getSession(false);
      

       if (session == null) {
       // 처리를 끝냄 - 컨트롤로 요청이 가지 않음.
       response.sendRedirect("/login.do");
       return false;
      }
      
      String userId = (String)session.getAttribute("userId");
      if (userId == null) { 
       response.sendRedirect("/login.do");  
       return false;
      }
      return true;
     }
    }

    preHandle은 리턴값이 boolean형태다. 리턴값이 true가 아닐경우 해당 컨트롤러로 이어주지 않는다.

     

    만들어 놓은 login검사를 위한 intercepor인  loginCheckInterceptor를 사용하기 위하여 설정파일에서 bean객체로 설정한다.

     

    <!-- Login Check Interceptor -->
    <bean id="loginCheckInterceptor" class="test.interceptor.LoginCheckInterceptor" /> 

     

    이제 해당 UrlHandlerMapping 사용시 interceptor를 사용하기 위하여 프로퍼티로 추가 한다

     

    <bean id="UrlHandlerMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">

       <!-- interceptor 추가 -->

      <property name="interceptors">
       <list>
        <ref bean="loginCheckInterceptor" />
       </list>
      </property>

     

      <property name="alwaysUseFullPath" value="true" />
      
      <property name="mappings">
       <props>
      <prop key="/main.do">menuManagementController</prop>
        
       </props>
      </property>
     </bean>

     

    이제 main.do라는 요청이 들어오게 되면 해당 컨트롤러인 menuManagementController로 가기 전에

    loginCheckInterceptor에서 login검사를 한 후 로그인이 되어 있지 않을 경우 다시 로그인 검사로(login.do)로 보내게 될 것이다.




    [출처] Spring - Interceptor 를 사용한 login 처리|작성자 gigar

    저작자표시 (새창열림)

    'Back-End > Spring' 카테고리의 다른 글

    SpringMVC에서 간단한 ExceptionResolver 구성하기  (0) 2012.06.26
    스프링에서 Content Type별 View 자동 맵핑 하기  (0) 2012.06.26
    ibatis 태그. 자주 쓰는 것들.  (0) 2012.05.15
    톰켓 org.springframework.web.context.ContextLoaderListener 에러  (0) 2012.04.17
    log4j.xml  (0) 2012.02.28
      'Back-End/Spring' 카테고리의 다른 글
      • 스프링에서 Content Type별 View 자동 맵핑 하기
      • ibatis 태그. 자주 쓰는 것들.
      • 톰켓 org.springframework.web.context.ContextLoaderListener 에러
      • log4j.xml
      설 연수
      설 연수

      티스토리툴바