1️⃣ 주문 상태 변경 시 알림(SSE) 기능 구현
- OrderService.patchOrderStatus() 내에서 NotificationService.sendOrderStatusNotification() 호출
- 주문 상태 변경이 성공적으로 이뤄지면, 해당 사용자에게 SSE 알림 전송
- 알림은 Notification 테이블에 저장되며, 이후 SSE 구독자에게 전송됨
2️⃣ SseEmitter 기반 실시간 알림 구독 API
- /api/v1/notification/subscribe 엔드포인트 생성
- 로그인 사용자만 접근 가능하도록 .authenticated() 설정 적용
- 구독 성공 시 "SSE 연결 완료" 메시지 전송 (프론트 확인용)
3️⃣ AccessToken을 쿠키에 저장하여 웹에서도 사용 가능하도록 개선
- Signin, Reissue 시 쿠키에 accessToken 저장
- JwtAuthenticationFilter에서 Authorization 헤더 or 쿠키에서 토큰 탐색하도록 리팩토링
ResponseCookie.from("accessToken", token)
.httpOnly(false)
.secure(false)
.path("/")
.sameSite("Lax") // or "None" (크롬 이슈 대응)
.build();
4️⃣ SSE 연결 시 401 Unauthorized 문제 해결
- 문제 원인: 브라우저에서 토큰이 포함되지 않아 인증 실패
- 해결 방법:
- httpOnly(false) 설정을 통해 JS에서도 쿠키 접근 가능하게 함
- HTML에서 fetch()로 먼저 로그인 시도 → 이후 EventSource로 연결
5️⃣ 로그아웃/회원탈퇴 시 쿠키 & Redis RefreshToken 모두 제거
- TokenService.clearTokenForUser() 메서드로 토큰 만료 및 Redis 삭제 책임 분리