코드 위의 하루 (A Day on the Code)

회원가입 구현 & 확인 과정 오류 모음집 본문

⚙️ 오류 해결 모음집

회원가입 구현 & 확인 과정 오류 모음집

code.with.siyeon 2025. 5. 12. 19:18

✅ Part 1. 비밀번호 해시 저장 문제

  • 오류 상황: DB에 평문(plain text) 비밀번호가 그대로 저장됨
  • 원인 분석: set_password() 메서드 누락
  • 해결 방법:
def create(self, validated_data):
    user = User(
        email=validated_data['email'],
        name=validated_data['name']
    )
    user.set_password(validated_data['password'])  # 이 부분 중요!
    user.save()
    return user

✅ Part 2. 이메일 중복 회원가입 가능

  • 오류 상황: 동일한 이메일로 여러 번 회원가입 가능
  • 원인 분석: 모델에서 email 필드에 unique=True 설정 안됨
  • 해결 방법:
class User(AbstractBaseUser):
    email = models.EmailField(unique=True)

✅ Part 3. 회원가입 API 테스트 중 프론트와 연동 실패

  • 상황: 프론트에서 POST 요청을 보내도 백엔드에 도달하지 않음
  • 원인 분석: CORS 설정 또는 API 경로 오기
  • 해결 방법:
    1. django-cors-headers 설치 및 설정
    2. urls.py에서 /signup/ 경로 확인
    3. 프론트에서 JSON 데이터 전송 형식 확인

✅ Part 4. 응답 메시지가 안 나옴 / 500 오류 발생

  • 오류 메시지: Internal Server Error (500)
  • 원인 분석: Serializer에서 유효성 검증 실패, 응답 처리 누락
  • 해결 방법:
if serializer.is_valid():
    serializer.save()
    return Response({'message': '회원가입이 완료되었습니다.'}, status=201)
else:
    return Response(serializer.errors, status=400)

✅ Part 5. 회원가입 성공은 했지만 DB에 안 보임

  • 문제 상황: 성공 메시지는 나왔는데 DB에서 데이터가 안 보임
  • 원인 분석: 마이그레이션이 되지 않았거나, 올바른 DB 테이블이 아님
  • 해결 방법:
python manage.py showmigrations
python manage.py migrate

✅ Part 6. password 필드가 그대로 출력되는 문제

  • 상황: 회원가입 이후 반환되는 응답 JSON에 비밀번호 포함됨
  • 원인 분석: Serializer에서 write_only=True 누락
  • 해결 방법:
class UserSerializer(serializers.ModelSerializer):
    password = serializers.CharField(write_only=True)

✅ Part 7. 회원가입 잘 되었는지 확인하려다 pk 헷갈림

  • 질문 내용: "pk는 뭐야?" / "password와 hashed는 따로 있는 거야?"
  • 정리:
    • pk는 primary key (기본키) 로, 일반적으로 id 컬럼
    • password는 해시된 상태로 DB에 저장됨 (별도 필드 없음, 자동 암호화된 값)

✅ Part 8. Git에 파일 일부만 올라간 문제

  • 상황: 팀원들과 협업 중, 내가 작성한 회원가입 코드 일부만 GitHub에 올라감
  • 원인 분석: git add 누락, .gitignore 오작동
  • 해결 방법:
git status  # 누락 파일 확인
git add .
git commit -m "회원가입 기능 및 설정 파일 추가"
git push