DRF 인증/권한 클래스의 전체적인 흐름
DRF에서 HTTP 요청이 View에 도달할 때 인증과 권한 체크가 어떤 순서로 일어나는지,
request.user와request.auth가 어떻게 설정되는지에 대한 핵심 동작 흐름

인증 vs 권한 개념 구분
인증(Authentication)
"당신은 누구입니까?" - 요청자의 신원 확인
성공 시
request.user와request.auth설정먼저 실행되며, 실패 시 401 Unauthorized 반환
권한(Authorization)
"당신이 이 작업을 할 수 있습니까?" - 접근 권한 검사
인증 성공 후 실행되며, 실패 시 403 Forbidden 반환
DRF 처리 흐름
1단계: 인증 (Authentication)
authentication_classes목록을 순서대로 확인각 클래스의
authenticate(request)호출성공:
(user, auth)튜플 반환 후 즉시 종료실패(자격 증명 없음):
None반환, 다음 클래스 시도실패(자격 증명 유효하지 않음):
AuthenticationFailed예외 발생모든 클래스가
None반환 시:request.user는AnonymousUser로 설정
2단계: 권한 (Authorization)
permission_classes목록을 순회하며has_permission(request, view)호출True반환: 다음 권한 클래스 계속 검사False반환: 즉시PermissionDenied예외 발생
에러 응답 구분
401 Unauthorized
AuthenticationFailed
JWT 토큰 만료/변조, 잘못된 API Key
401 Unauthorized
NotAuthenticated
인증 정보 없이 접근 시도
403 Forbidden
PermissionDenied
인증은 되었지만 해당 리소스 접근 권한 없음
실무 활용 팁
전역/뷰별 설정 조합
settings.py에 기본 인증/권한 정책 설정특정 뷰에서 필요 시
authentication_classes,permission_classes로 오버라이드
디버깅 방법
View 메소드 내에서
request.user,request.auth,request.user.is_authenticated확인AnonymousUser면 인증 단계 문제, 제대로 나왔는데 403이면 권한 클래스 로직 문제
Last updated
