- Language: Java17
- Build: Gradle 8.10
- 데이터베이스 쿼리 & ORM: Spring Data JPA
- Framework: Spring Boot 3.4.5
- Database: MySql
- Security: Spring Security, JWT
- 배포: AWS - EC2, RDS
- API 문서화: Swagger 2.2.0
본 서비스는 🎬 영화 리뷰 및 커뮤니티 플랫폼입니다.
사용자는 회원가입 후 영화에 대한 별점과 리뷰를 남길 수 있으며,
리뷰를 기반으로 다른 사용자들과 자유롭게 의견을 나눌 수 있는 커뮤니티 기능도 제공합니다.
- TMDB 영화 API를 기반으로 최신 영화 정보를 확인하고
- 영화에 대한 개인적인 의견을 공유하거나
- 다른 사용자들의 리뷰를 읽고 소통할 수 있습니다.
간단하고 직관적인 UI로 누구나 쉽게 영화에 대해 이야기할 수 있는 공간을 제공합니다.
- 🧑💻 회원가입 / 로그인
- Spring Security 와 JWT 토큰 인증
- 🎞️ 영화 목록 조회
- TMDB API(영화 API)를 스케쥴링 하여 내부 DB에 저장
- 목록 조회할 때마다 저장된 영화 정보를 불러옴
- 📽️ 영화 상세 조회
- 불러온 영화를 누르면 해당 영화의 상세 정보 확인
- ✍️ 리뷰 작성
- 상세 조회 시 해당 영화의 별점 및 리뷰 작성 기능
- 📝 게시글 작성
- 자유롭게 글을 작성할 수 있는 게시판 제공
- 📚 게시글 목록 및 상세 조회
- 게시글 제목, 내용, 작성자, 작성일 등 확인 가능
- 💬 댓글 작성 및 삭제
- 게시글에 댓글을 달아 사용자 간 소통 가능
- 🧹 게시글/댓글 삭제
- 본인 글 또는 댓글 삭제 기능 제공
- 🔍 검색 기능
- 키워드로 게시글 검색 가능
문제 상황
초기 로그인 구현 시 JWT 토큰을 쿠키(HttpOnly) 에 담아 응답했으나,
클라이언트(React)와 백엔드(Spring Boot) 간 도메인이 다를 경우
CORS 정책에 의해 쿠키가 제대로 전달되지 않는 문제가 발생함.
원인 분석
- CORS 정책상
credentials옵션(withCredentials)을 설정하지 않으면 브라우저가 쿠키를 차단함. - 또한
SameSite속성과Secure설정 등 브라우저 보안 정책과도 충돌 가능.
해결 방법
✅ JWT 토큰을 쿠키 대신 HTTP 헤더에 담아 전송하도록 수정
- 프론트엔드에서
Authorization: Bearer <token>형태로 요청 헤더에 추가 - 서버 측에서는 필터에서 해당 헤더를 파싱하여 인증 처리
