1. 판매자 승격 시 DB 미반영 문제
- 현상: 판매자 등록 API 호출 성공(200 OK) 후에도
Account 테이블의 Role이 SELLER로 변경되지 않음.
- 원인:
TransactionalEventListener의 AFTER_COMMIT 단계에서 별도의 트랜잭션 처리가 없어 변경 감지(Dirty Checking)가 동작하지 않음.
- 해결 방법:
AuthPromoteSellerUseCase의 promoteSeller 메서드에 @Transactional(propagation = Propagation.REQUIRES_NEW)를 추가하여 새 트랜잭션에서 커밋되도록 보장하거나, 리스너 단에서 트랜잭션을 강제해야 함.
2. 내 정보 조회 시 권한 불일치 문제
- 현상: DB상 권한은
SELLER로 바뀌어도, getMe API 응답 데이터의 role이 계속 USER로 내려옴.
- 원인: 현재
getMe 서비스 로직이 DB를 조회하지 않고, 인자로 넘어온 MemberPrincipal(토큰 정보)의 Role을 그대로 반환함.
- 해결 방법 (택 1):
getMe 로직 내부에서 Account 엔티티를 조회하여 DB에 저장된 최신 Role을 반환하도록 수정. (토큰 재발급 없이도 즉시 UI 반영 가능)
- 대안: 판매자 승격 성공 시 서버에서 새 토큰을 내려주거나, 프론트에서 리프레시 토큰을 이용해 액세스 토큰을 갱신 요청을 보냄
3. S3 이미지 업로드 CORS 에러
- 현상: 프론트엔드(
localhost, duckdns)에서 S3로 직접 PUT 요청 시 CORS 정책에 의해 차단됨.
- 해결 방법: AWS S3 버킷의 CORS 설정에 아래 도메인 추가 요청
http://localhost:3000
https://rarego.duckdns.org
- 허용 메서드:
GET, PUT, POST, OPTIONS
- 허용 헤더: (또는
Content-Type 등 필수 헤더)