24.11.05(Interceptor, 로그아웃)

jiiiiiiiArchive.·2024년 11월 5일

🤯지식주머니🤯

목록 보기
48/98
post-thumbnail

Interceptor

  • 요청 처리 흐름에 개입하여 특정 작업을 수행하도록 지원하는 기능
  • 특정 URL에 대해 공통적인 작업 구현
  • 중복 코드 줄이고 관심사 분리에 유용
  • 예 : 인증, 권한, 로깅, 요청 데이터 전처리 등 처리
  • 구조
    • HandlerInterceptor 인터페이스 구현 or HandlerInterceptorAdapter 클래스 상속
    • preHandle 메서드
      • 컨트롤러에 요청이 전달되기 전에 호출
      • 이 메서드에서 false를 반환하면 요청 처리 중단, true를 반환하면 요청 처리 계속
      • 주로 사용 : 인증, 권한 확인, 요청 데이터 유효성 검사
    • postHandle 메서드
      • 컨트롤러가 요청을 처리한 후에 호출
      • 뷰가 렌더링되기 전 단계에서 추가 작업을 수행할 수 있음
      • 주로 사용 : 모델에 데이터 추가, 비즈니스 로직 후 처리
    • aftercompletion 메서드
      • 뷰가 렌더링된 후 호출, 리소스를 해제하거나 예외 처리 수행 가능
      • 주로 사용 : 로깅, 세션 종료, 리소스 정리
  • 흐름 예시
  1. 클라이언트가 요청을 보냄
  2. preHandle : 요청이 컨트롤러로 전달되기 전에 호출(여기서 false를 반환하면 요청 중단)
  3. 컨트롤러가 요청을 처리하고 Model, View 반환
  4. postHandle : 컨트롤러가 요청을 처리한 후 뷰가 렌더링되기 전에 호출
  5. 뷰가 클라이언트에게 렌더링
  6. afterCompletion : 뷰 렌더링이 완료된 후 호출
  • 활용 사례
    • 로그인 검증
      • 로그인된 사용자만 접근할 수 있는 페이지에 대해 로그인 여부 확인
      • 로그인되지 않았다면 로그인 페이지로 리다이렉트
    • 권한 확인
      • 특정 역할을 가진 사용자에게만 특정 기능을 허용하기 위한 권한 확인
    • 로깅 및 분석
      • 요청 및 응답 정보를 로깅하여 트래픽 분석과 오류 추적에 사용
    • API 제한
      • 클라이언트의 API 요청 횟수를 제한하여 트래픽 제어
  • 주의사항
    • postHandle과 afterCompletion
      • postHandle은 예외 발생 시 호출되지 않으므로, 예외 처리는 주로 afterCompletion에서 수행하는 것이 안전
    • 세션 및 리소스 관리
      • 세션과 자원을 잘 정리하여 메모리 누수 문제 방지

로그아웃

  • session에 저장된 midx 속성 값이 null이 아닐 경우(사용자가 로그인한 상태), memberName세션 속성에 저장된 사용자의 이름을 표시하고 "로그아웃" 메시지 출력
profile
이것저것 다 적는 기록장📚

0개의 댓글