프로젝트
📚 회원 탈퇴(DELETE) 기능 정리 (10)
Chansman
2025. 6. 10. 01:21
회원 탈퇴(DELETE) 기능 정리
1. 🔥 기능 설명
- 로그인한 사용자가 자신의 계정을 삭제(탈퇴)하는 기능.
- 삭제 후 "Deleted successfully" 메시지를 응답.
- 인증(로그인) 된 사용자만 요청 가능.
- 탈퇴 시 연결된 데이터도 같이 삭제됨.
- 연결된 Account, TransactionHistory, Notification, Analysis 등.
2. 🔧 추가한 코드
@extend_schema(
summary="회원 탈퇴",
description="회원 탈퇴 후 'Deleted successfully' 메시지를 반환합니다.",
responses={200: {"type": "object", "properties": {"message": {"type": "string"}}}},
)
def delete(self, request):
request.user.delete()
return Response({"message": "Deleted successfully"}, status=status.HTTP_200_OK)
추가 위치:
UserProfileView 클래스 안에 get(), patch()와 같은 레벨에 추가.
3. 📝 API 스펙 요약
항목내용
URL | /api/users/me/ |
Method | DELETE |
권한 | 로그인한 사용자만 (IsAuthenticated) |
요청 바디 | 없음 (DELETE 메서드) |
응답 바디 | { "message": "Deleted successfully" } |
응답 코드 | 200 OK |
4. 📚 검증 포인트
- ✅ 권한 체크: 인증된 사용자만 탈퇴 가능.
- ✅ 정상 응답: 200 OK + "Deleted successfully" 반환.
- ✅ DB 삭제: CustomUser 레코드 삭제.
- ✅ 연결 데이터 삭제: Account, TransactionHistory, Notification, Analysis → 모두 CASCADE 삭제.
- ✅ 로그인 불가: 삭제 후 해당 계정으로 로그인 시도 시 실패.
5. ⚠️ 주의사항
- Hard Delete: 데이터베이스에서 완전히 삭제됨 (Soft Delete 아님).
- 토큰은 남아있지만 유저가 삭제되어 인증 실패 발생.
- 탈퇴 후 재가입 가능: 이메일, 닉네임 모두 DB에서 제거되기 때문에.
📌 요약
회원 탈퇴 기능은
DELETE /api/users/me/ 호출 시
본인 계정 삭제 + "Deleted successfully" 메시지 반환.