spring_2기[본캠프]/과제

[과제] Spring 플러스 프로젝트 Day 7

minwoo95 2026. 3. 18. 21:30

https://github.com/TheOne-team-1/TheOne-Bottle-Shop

 

GitHub - TheOne-team-1/TheOne-Bottle-Shop: 주류 커머스 플랫폼 백엔드 구현하기

주류 커머스 플랫폼 백엔드 구현하기. Contribute to TheOne-team-1/TheOne-Bottle-Shop development by creating an account on GitHub.

github.com

 

1. Troubleshooting: Jackson Library Package Conflict
문제: ObjectMapper가 com.fasterxml.jackson이 아닌 tools.jackson 패키지 경로를 참조하여 런타임 에러 발생.

원인: 최신 라이브러리 의존성(Jackson 3.x 또는 특정 도구 모음)으로 인해 표준 패키지 경로가 변경됨.

해결: CustomAuthenticationEntryPoint 및 CustomAccessDeniedHandler에서 import tools.jackson.databind.ObjectMapper;로 경로를 명시적으로 수정하여 JSON 직렬화 정상화.

2. Spring Security & JWT 예외 처리 고도화
상세 에러 코드 설계: 단순 401/403 응답을 넘어, 클라이언트가 대응할 수 있도록 AuthExceptionEnum을 통해 세부 코드(A001~A005) 정의.

A003: 만료된 토큰 (Refresh Token 재발급 트리거)

A005: 토큰 누락 (로그인 유도)

에러 전달 아키텍처:

Filter: request.setAttribute("exception", Enum)을 통해 인증 단계에서 발생한 구체적인 예외 정보를 HttpServletRequest에 담아 전달.

EntryPoint: 전달받은 attribute를 동적으로 읽어 BaseResponse 규격에 맞춰 클라이언트에게 전송.

3. 데이터 무결성 및 보안 필터 체인 최적화
Role 접두사 관리: JWT에서 추출한 role 정보에 ROLE_ 접두사를 동적으로 결합하여 SimpleGrantedAuthority 주입, SecurityConfig의 hasRole() 검증과 일치시킴.

필터 순서: JwtAuthenticationFilter를 UsernamePasswordAuthenticationFilter 앞에 배치하여 Stateless 환경에서의 인증 우선순위 확립.

 

 

 

추가로, 채팅기능 개발을 더 담당하게 되어 채팅 설계까지 하는 하루였다.

쉽지않다. 내가 생각하는 엔티티 설계와는 차이가 좀 있다.

내일 정확히 설계후 포스트 하도록 하겠다!