Skip to content

Limjaewoo-kor/Login_Filter_Interceptor

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

study-thymeleaf-basic_part3

Login 요약

  • 세션 설정없이, 쿠키만으로 처리하는 로그인 및 로그아웃 [ 보안 취약 - 쿠키는 얼마든지 클라이언트측에서 임의로 수정 가능 ]

  • 필요한 조건 2가지

  1. 랜덤으로 변경하는 쿠키 추가 [UUID]
  2. 일정시간이상 동작하지않으면 세션 invalidate 처리
  • 서블릿에 있는 세션을 사용하지않고 세션 객체를 직접 개발하여 적용하는 로그인 및 로그아웃 [ 보안을 위한 random한 UUID 추가 ]
  • 서블릿에서 지원하는 세션을 이용한 로그인 및 로그아웃 처리 + 타임아웃 처리 [ 일정시간 동작하지않으면 자동 로그아웃 처리 // 세션 invalidate]

Filter 요약

흐름도

  • HTTP 요청 -> WAS -> 필터 -> 서블릿 -> 컨트롤러

  • doFilter의 ServletRequest는 HttpServletRequest의 부모이나, 기능이 적기에 HttpServletRequest으로 캐스트해서 사용하는게 일반적이다.

  • 체인기능[ chain.doFilter(request,response); ]의 경우 -> 다음 필터가 있으면 다음 필터를 호출 없으면 서블릿이 호출된다. -> HTTP 요청 -> WAS -> 필터1 -> 필터2 -> 필터3 -> 서블릿 -> 컨트롤러

  • init(): 필터 초기화 메서드, 서블릿 컨테이너가 생성될 때 호출

  • doFilter(): 고객의 요청이 올 때 마다 해당 메서드가 호출

  • destroy(): 필터 종료 메서드, 서블릿 컨테이너가 종료될 때 호출

  • 로그인된 사용자 HTTP 요청 -> WAS -> 필터 -> 서블릿 -> 컨트롤러

  • 로그인하지 않은 사용자 HTTP 요청 -> WAS -> 필터(서블릿 호출X)


Interceptor 요약

  • 구현체
    HandlerInterceptor 인터페이스를 구현하면 된다.
  • 흐름도 HTTP 요청 -> WAS -> 필터 -> 서블릿 -> 스프링 인터셉터 -> 컨트롤러
  • 로그인된 사용자 HTTP 요청 -> WAS -> 필터 -> 서블릿 -> 스프링 인터셉터 -> 컨트롤러
  • 로그인하지 않은 사용자 HTTP 요청 -> WAS -> 필터 -> 서블릿 -> 스프링 인터셉터(컨트롤러 호출 X)
  • Filter와 마찬가지로 체인기능이 존재한다. HTTP 요청 -> WAS -> 필터 -> 서블릿 -> 인터셉터1 -> 인터셉터2 -> 인터셉터3 -> 컨트롤러

정상 흐름

  • preHandle : 컨트롤러 호출 전에 호출된다. (더 정확히는 핸들러 어댑터 호출 전에 호출된다.) preHandle 의 응답값이 true 이면 다음으로 진행하고, false 이면 더는 진행하지 않는다. false 인 경우 나머지 인터셉터는 물론이고, 핸들러 어댑터도 호출되지 않는다.
  • postHandle : 컨트롤러 호출 후에 호출된다. (더 정확히는 핸들러 어댑터 호출 후에 호출된다.)
  • afterCompletion : 뷰가 렌더링 된 이후에 호출된다.

예외가 발생시

  • preHandle : 컨트롤러 호출 전에 호출된다.
  • postHandle : 컨트롤러에서 예외가 발생하면 postHandle 은 호출되지 않는다.
  • afterCompletion : afterCompletion 은 항상 호출된다. 이 경우 예외( ex )를 파라미터로 받아서 어떤 예외가 발생했는지 로그로 출력할 수 있다.

정리 - 인터셉터는 스프링MVC에 최적화된 필터기능을 제공하므로, 꼭 필터를 써야할 상황이 아니라면, 인터셉터를 이용하도록 하자.

About

Login / Filter / Interceptor

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published