📌 Django OAuth 리팩토링 - 1편: secret.json → .env + OAuth API 리팩토링

2025. 6. 13. 00:47·프로젝트

📌 Django OAuth 리팩토링 - 1편: secret.json → .env + OAuth API 리팩토링


🔧 프로젝트 설정 환경 개선

✅ 기존 문제

  • secret.json을 통해 민감 정보를 관리했으나, 버전 관리에 취약하고 배포/개발 환경 분리 어려움

🔄 개선 작업

  • python-dotenv를 이용해 .env 및 .env.local 방식으로 전환
  • .env에는 운영환경용, .env.local에는 개발용 설정 분리 관리
  • base.py에서 아래 순서로 로드:
  • load_dotenv(BASE_DIR / ".env") load_dotenv(BASE_DIR / ".env.local", override=True)
  • 🔒 NAVER_CLIENT_ID, GITHUB_SECRET 등 OAuth 관련 설정도 모두 환경변수로 이동

🌍 배포/로컬 구분 환경 구성

  • DJANGO_ENV 변수로 production / development 설정
  • DB_HOST는 로컬: localhost, 배포: my-db 등으로 구분 적용

🪄 OAuth 기능 리팩토링

✅ 기존 방식 문제

  • form 기반 HTML 페이지에서 닉네임을 입력받음
  • 비동기 요청 불가능 & SPA/모바일에 부적합

🔧 개선 방식

  • APIView 또는 @api_view + serializer 기반으로 API 리팩토링
  • 닉네임 생성 및 중복 체크 API 2개로 분리

🔹 /oauth/nickname/ (POST)

  • OAuth 로그인 후 이메일로 가입되지 않은 경우 닉네임 설정 API 호출
  • 닉네임과 이메일을 이용해 CustomUser 생성

🔹 /oauth/nickname/check/ (GET)

  • 쿼리 파라미터로 닉네임을 받아 중복 여부 확인
  • 응답: { is_available: True/False }

🔹 /oauth/check-nickname/ (POST)

  • POST 방식 Swagger 테스트용 API
  • 내부 로직은 위 GET과 동일

🧩 Swagger 문서화까지 완성

  • drf-spectacular 사용
  • @extend_schema 데코레이터 활용해 query parameter, 응답 예시, 설명 추가
  • 닉네임 중복 확인 GET/POST API 모두 swagger UI에 명확히 표현

🛠 리팩토링 전후 비교 요약

항목리팩토링 전리팩토링 후

보안정보 secret.json .env 환경변수
닉네임 처리 HTML form 기반 REST API (serializer)
API 문서화 없음 Swagger 자동 문서화
SPA 대응성 ❌ 불가능 ✅ 완전 대응

📌 다음 편 예고

2편에서는 OAuth callback 이후 회원가입 프로세스를 JWT + 쿠키 기반 인증으로 개선하는 내용을 다룹니다.

👉 다음 시리즈부터는 OAuth 콜백 처리 리팩토링, JWT 토큰 세팅 및 login() 로직 분리 등을 하나씩 다뤄나갈 예정입니다.

'프로젝트' 카테고리의 다른 글

📌 Django OAuth 리팩토링 - 3편: 닉네임 중복 확인 API 구현  (0) 2025.06.13
📌 Django OAuth 리팩토링 - 2편: OAuth Callback + JWT 쿠키 연동  (0) 2025.06.13
🚀 Django 프로젝트 GitHub Actions CI/CD 구축 시 문제 해결기 (with PostgreSQL, Redis)  (0) 2025.06.11
Django 프로젝트 명령어 정리  (1) 2025.06.11
📌 Docker PostgreSQL과 로컬 Django 연동 문제 해결 과정 정리 2/2  (0) 2025.06.11
'프로젝트' 카테고리의 다른 글
  • 📌 Django OAuth 리팩토링 - 3편: 닉네임 중복 확인 API 구현
  • 📌 Django OAuth 리팩토링 - 2편: OAuth Callback + JWT 쿠키 연동
  • 🚀 Django 프로젝트 GitHub Actions CI/CD 구축 시 문제 해결기 (with PostgreSQL, Redis)
  • Django 프로젝트 명령어 정리
Chansman
Chansman
안녕하세요! 코딩을 시작한 지 얼마 되지 않은 초보 개발자 찬스맨입니다. 이 블로그는 제 학습 기록을 남기고, 다양한 코딩 실습을 통해 성장하는 과정을 공유하려고 합니다. 초보자의 눈높이에 맞춘 실습과 팁, 그리고 개발하면서 겪은 어려움과 해결 과정을 솔직하게 풀어내려 합니다. 함께 성장하는 개발자 커뮤니티가 되기를 바랍니다.
  • Chansman
    찬스맨의 프로그래밍 스토리
    Chansman
  • 전체
    오늘
    어제
    • 분류 전체보기 (794) N
      • Python (32)
      • 프로젝트 (113) N
      • 과제 (25)
      • Database (40)
      • 멘토링 (11)
      • 특강 (37)
      • 기술블로그 (41)
      • 기술블로그-Fastapi편 (33)
      • 기술블로그-Django편 (154) N
      • 기술블로그-Flask편 (36)
      • AI 분석 (5)
      • HTML & CSS (31)
      • JavaScript (17)
      • AWS_Cloud (21)
      • 웹스크래핑과 데이터 수집 (14)
      • Flask (42)
      • Django (77)
      • Fastapi (16)
      • 연예 (14)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    urbantrends
    lawsuitculture
    trumpmuskclash
    global politics
    bts
    RM
    newpoliticalparty
    travel ban
    btscomeback
    chatgpterror
    college reunions
    chinanightlife
    hotcoffeecase
    americanlaw
    youngprofessionals
    remittance
    classaction
    basalcellcarcinoma
    americaparty
    smartphonedurability
    gpterror
    livebroadcast
    life reflection
    btsreunion
    homebartrend
    뷔
    btsdischarge
    self-growth
    titaniumcase
    btsjungkook
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Chansman
📌 Django OAuth 리팩토링 - 1편: secret.json → .env + OAuth API 리팩토링
상단으로

티스토리툴바