Skip to content

ZeroZoa/JWT_Backend

Repository files navigation

header

JWT를 이용해 Access Token, Refresh Token을 구현하고 테스트하기 위한 프로젝트입니다!

기능 설명
회원가입 일반 사용자 회원가입
이메일 인증 일반 사용자 회원가입시 이메일 유효성 검사
로그인 일반 사용자의 Access Token, Refresh Token 발급
비밀번호 찾기 및 재설정 패스워드 분실시 이메일 인증 후 비밀번호 재설정
Access, Refresh Token Access Token이 만료되더라도 Refresh Token을 검사후 Access Token 재발급
내 프로필 조회(권한 확인용) Access Token이 만료 후 Refresh Token을 통해 재발급 -> 로그인 유지 확인



사용 기술스택입니다!

Java Spring Spring JPA Spring Security
PostgreSQL Redis Docker Gradle



Filter와 Interceptor의 차이점

Filter

  • Servlet Container 내에서 실행된다.
  • 모든 요청에 대해 동작하며, Spring Context 외부의 요청과 응답도 처리할 수 있다.
    → Spring Security가 Spring MVC 밖에서도 작동할 수 있게 하는 핵심적인 이유.
  • Spring Security는 자체 필터 체인을 통해 인증과 인가 과정을 관리한다.
  • 사용자 정의 필터를 자체 필터 체인에 쉽게 추가할 수 있다.
  • 필터는 요청이 DispatcherServlet에 도달하기 전에 실행된다.
    → 인증과 같이 모든 요청에 대해 처리해야 하는 로직에 적합하다.

Interceptor

  • Spring MVC의 일부로, DispatcherServlet이 컨트롤러를 호출하기 전, 후, 완료 후에 동작한다.
  • Spring Context 내부에서만 작동한다.
  • 주로 컨트롤러 실행을 가로채는 데 사용된다.
  • 요청 사전 처리, 로깅, 트랜잭션 관리 등에 적합하다.
  • Spring Bean 접근이 가능하며 구성도 쉽다.

Filter vs Interceptor

Filter Interceptor
DispatcherServlet Filter는 Dispatcher Servlet의 밖에 위치함
Web Context에 존재하며 Spring Context와 무관함
DispatcherServlet Interceptor는 Dispatcher Servlet안에 위치함
Spring Context에 존재, 모든 Spring Bean에 접근 가능
DispatcherServlet은
-SpringMVC의 프론트 컨트롤러이다.
-HTTP요청을 적절한 컨트롤러에 라우팅
-뷰 리졸버를 통해 렌더링
→ Filter 이후 DispatcherServletdl 요청을 받고,
그 다음 인터셉터가 컨트롤러 호출 직전 직후 동작
Web context는
-서블릿 컨테이너의 레벨의 context가 요청을 관리하고있다는 것을 나타냄
-서블릿과 필터가 여기에 속함
-DispatcherServlet 바깥에서 요청과 응답을 가로채고 처리함
Spring context는
-스프링 컨테이너의 애플리케이션 context가 요청을 관리한고있다는 것을 나타냄
-DispatcherServlet이 Spring Context를 사용하여 관리
→ 필터는 Web context에 등록되어 Spring MVC 앞에서 동작하고, 인터셉터는 Spring MVC 안에서DispatcherServlet 이후 컨트롤러 앞뒤로 동작함

DispatcherServlet

  • Spring MVC의 프론트 컨트롤러
  • HTTP 요청을 적절한 컨트롤러에 라우팅
  • ViewResolver를 통해 렌더링 처리

요청 흐름: Filter → DispatcherServlet → Interceptor → Controller

Web Context vs Spring Context

Web Context

  • 서블릿 컨테이너 레벨의 Context
  • Filter, Servlet 등이 여기에 속함
  • DispatcherServlet 바깥에서 요청/응답을 가로챔

Spring Context

  • Spring 애플리케이션 컨텍스트
  • DispatcherServlet이 Spring Context를 사용하여 컨트롤러/빈을 관리
  • Interceptor는 Spring Context 내부에서 동작

결론:
Filter는 Web Context에서 Spring MVC 앞단에서 동작하고,
Interceptor는 Spring MVC 내부에서 Controller 앞뒤로 동작한다.

VirtualFilterChain

  • Spring Security가 필터 체인을 실행하기 위해 내부적으로 사용하는 구현체
  • 여러 Security Filter를 순서대로 실행시키는 가상의 체인
  • 실제 클래스: FilterChainProxy.VirtualFilterChain
  • 실무에서 JWT 인증은 대부분 필터 기반으로 구현
  • Spring Security는 VirtualFilterChain을 통해 필터를 순서대로 실행

Interceptor는 언제 사용할까?

  • 단순 로깅
  • 특정 비즈니스 로직 전/후 처리
  • 컨트롤러 진입 전/후 공통 처리
  • 인증과 무관한 기능 처리

About

Spring Backend for JWT_Server

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors