Django 프로젝트: DRF를 활용한 전자상거래 API 개발
카테고리
프로그래밍/소프트웨어 개발
서브카테고리
웹 개발
대상자
- Django 및 DRF(Django REST Framework)를 활용한 웹 API 개발자
- 인증/보안 기능 구현에 관심 있는 중급 이상 개발자
- 전자상거래 시스템 구축을 목표로 하는 프로젝트 팀원
핵심 요약
- DRF 기반 인증 시스템 확장: Token 기반 인증을 통해
Product
및Category
모델의 CRUD 권한 분리 (인증 사용자만 수정/삭제 가능, 비인증 사용자는 조회만 허용). - 사용자 프로필 API 구현:
User Profile
엔드포인트를 통해 프로필 조회 및 업데이트 기능 추가. - 보안 강화 기능:
- 비밀번호 변경 API (성공 시 기존 토큰 삭제 및 재발급)
- 로그아웃 기능 (토큰 무효화)
섹션별 세부 요약
1. 인증 기능 확장
Product
및Category
모델에 인증 권한 체크 로직 추가 (POST/PUT/DELETE 요청 제한).- Anonymous User는 모든 요청에 대해 GET만 허용.
- 인증 로직은
TokenAuthentication
클래스를 기반으로 구현.
2. 사용자 프로필 기능 구현
User Profile
엔드포인트(/api/profile/
) 생성.- 사용자 프로필 정보 조회 및 업데이트 기능 제공.
UserSerializer
를 활용한 데이터 직렬화 처리.
3. 비밀번호 변경 및 로그아웃
PasswordChangeView
를 기반으로 비밀번호 변경 API 개발.- 비밀번호 변경 성공 시 기존 토큰 삭제 및 새로운 토큰 생성.
LogoutView
를 통해 토큰 무효화 로직 구현 (사용자 요청 시 토큰 삭제).
4. 테스트 케이스 구성
- 인증 필요 기능 테스트:
- 비인증 사용자가 Product
수정/삭제 요청 시 401 에러 반환.
- 인증 사용자가 프로필 조회/비밀번호 변경/로그아웃 요청 시 정상 처리.
- 토큰 유효성 검증: 로그아웃 후 토큰 사용 시 401 에러 발생.
결론
- DRF 인증 시스템 구현 시, Token 기반 권한 분리 및 사용자 프로필 API는 필수 기능.
- 보안 강화를 위해 비밀번호 변경 시 기존 토큰 삭제, 로그아웃 시 토큰 무효화 로직 추가.
- 테스트 케이스 작성 시, 인증/비인증 사용자별 요청 처리 결과를 체계적으로 검증해야 함.
- 코드 참고: 링크에서 전체 소스 코드 확인 가능.