일반적인 사용자 외에 직접 주소를 쳐서 접근 하는 사용자를 방지하기 위하여
매번 해당되는 요청시 마다 login검사를 해줘야 하는 경우가 있다.
이 경우 login검사를 모든 컨트롤러에서 해주기엔 게시판 하나만 있는 사이트라면 모를까
다수의 기능을 가지고 있는 사이트에서라면 굉장히 애로사항이 꽃을 피울만한 일이다.
이런 경우에 login검사 처리를 Spring에서 제공하는 Interceptor를 사용하여 한번에 해결 가능하다
InterCeptor에서 제공하는 3가지 메소드는 각각 개입하는 시점이 다르다.
- preHandle - Controller 실행 요청전
- postHandle - view(jsp)로 forward되기 전에
- afterCompletion - 끝난뒤
login 검사를 해야 될 시점은 Dispatcher가 해당 controller로 이어주기 전에 해야 되므로 preHandle메소드를 사용하여 처리하겠다.
HandlerInterceptorAdapter을 상속받은 LoginCheckInterceptor 을 만든다.
|
preHandle은 리턴값이 boolean형태다. 리턴값이 true가 아닐경우 해당 컨트롤러로 이어주지 않는다.
만들어 놓은 login검사를 위한 intercepor인 loginCheckInterceptor를 사용하기 위하여 설정파일에서 bean객체로 설정한다.
|
이제 해당 UrlHandlerMapping 사용시 interceptor를 사용하기 위하여 프로퍼티로 추가 한다
|
이제 main.do라는 요청이 들어오게 되면 해당 컨트롤러인 menuManagementController로 가기 전에
loginCheckInterceptor에서 login검사를 한 후 로그인이 되어 있지 않을 경우 다시 로그인 검사로(login.do)로 보내게 될 것이다.
[출처] http://blog.naver.com/gigar/60103191032
'Framework & Platform > Spring' 카테고리의 다른 글
spring - 스프링 3.0의 숨은 매력 포인트 (0) | 2012.08.25 |
---|---|
spring - session 생성 및 삭제 리스너 등록 (0) | 2012.08.22 |
spring - @MVC 확장 포인트 (0) | 2012.08.22 |
spring - @ModelAttribute와 @SessionAttributes의 이해와 한계 (0) | 2012.08.22 |
서버 에러 페이지 처리 (0) | 2012.06.16 |