본문 바로가기

TIL

TIL) 세션에서 로그인 필터와 권한 필터

1. 문제상황

 가입할 때, 권한을 주는데 로그인 후 필터에서 특정 URL에 대하여 오너(OWNER) 권한을 가진 사용자만 접근 할 수 있도록 제한하는 로직을 구현하였습니다.


2. 구현 내용

 특정 URL에 OWNER 권한을 가진 사용자만 접근할 수 있도록 제한을 하는 필터입니다. 권한이 없는 사용자 혹은 로그인하지 않은 사용자가 접근을 하려고 할 때에는 401 Unauthorized 상태와 메시지를 반환합니다.

 

핵심 로직

 i) URL 매칭 

  • 특정 URL 패턴이 OWNER 전용 경로인지 확인한다.
  • PatternMatchUtils.simpleMatch를 활용하여 요청 URL과 정의된 경로를 비교합니다.
private boolean isForOwner(String requestUrl){
  return PatternMatchUtils.simpleMatch(FOR_OWNER, requestUrl);
}

 

ii) 세션 확인

  • 요청 세션이 있는지 확인합니다.
  • 세션이 없거나 유효하지 않다면 접근을 차단합니다.

iii) 권한을 확인

  • 세션에서 사용자 정보를 가져와서 권한(OWNER)을 확인
  • 권한이 OWNER가 아니라면 접근을 제한합니다.

iV) 응답 처리

  • 제한된 경우 401과 메시지를 반환합니다.
  • HttpServletResponse로 클라이언트에 적절한 응답을 전달합니다.

3.  핵심 개념 및 학습내용

i) Filter의 역할

  • HTTP 요청/응답 처리 단계에서 특정 조건에 따라 요청을 중단하거나 추가 로직을 수행할 수 있습니다.
  • 보통 보안, 로깅, 데이터 변환 등에 활용합니다.

ii) 세션 및 권한 검증

  • HttpSession을 통해 로그인 상태와 사용자 정보를 확인합니다.
  • 세션 객체는 필요한 데이터를 저장하고, 권한 확인 시 활용합니다.

iii) URL 패턴 매칭

 

  • Spring의 PatternMatchUtils.simpleMatch로 간단한 URI 경로 매칭이 가능합니다.
  • 정규 표현식 수준의 복잡한 URL 매칭이 필요하지 않은 경우 유용합니다.

iV) 응답 처리

  • HttpServletResponse를 사용하여 상태 코드, 메시지 등을 명시적으로 설정.

4. 확장 가능성

  •  다양한 권한별 접근 제한을 추가할 수 있습니다.
  • Spring Security로 전환 하여 더 강력하고 확장 가능한 보안 로직으로 대체 할 수도 있습니다.

5. 내일 해야하는 것

  • 리뷰 구현

 

 

'TIL' 카테고리의 다른 글

TIL) jpa 프로젝트 트러블 슈팅  (1) 2024.12.17
TIL) Self Join  (2) 2024.12.06
TIL) 테스트 코드 작성  (1) 2024.12.03
TIL) 디자인 패턴  (1) 2024.12.02
TIL) n^2 배열 자르기  (1) 2024.11.29