django

TIL230502 트러블 해결

베스트오버 2023. 5. 9. 23:51

버그 발생

TypeError: Field 'id' expected a number but got <django.contrib.auth.models.AnonymousUser object at 0x000001B87D5A83A0>.

 

과정

팀 프로젝트를 싱크 포크 후에 테스트를 하던 도중 5명이 위와 똑같은 오류가 떠서 왜 이 오류가 뜨는지 한참을 헤맸었다.

분명 싱크 포크 하기 전에는 각기 다 잘 되었는데...

 

그래서 5명이 포크 받기 전 원인을 각자 찾던 도중 나는 전 커밋을 찾아보니

아래와 같이 코드가 들어와 있었던 것이였다.

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'rest_framework_simplejwt.authentication.JWTAuthentication',
    )
}
REST_FRAMEWORK = {
    # Use Django's standard `django.contrib.auth` permissions,
    # or allow read-only access for unauthenticated users.
    'DEFAULT_AUTHENTICATION_CLASSES': [
        'rest_framework.authentication.BasicAuthentication',
    ]
}

이 두 가지는 각기

토큰방식과 HTTP 요청 헤더에 사용자 이름과 비밀번호를 담아 보내어 인증하는 방식인데, 둘 다 설정이 되어 있어

아무리 토큰을 가지고 json을 보내도 권한이 없다고 뜨는 것이였다.

 

관련 내용은 아래와 같다.

 

원인

토큰 방식으로 하기로 협의하고

rest_framework_simplejwt.authentication.JWTAuthentication

로 작업하기로 하였는데

 

어떤 팀원분이

rest_framework.authentication.BasicAuthentication

를 실수로 넣으셨는데 Merge애서도 체크를 못한 일이였다.

 

해결

그래서

EST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': (
        'rest_framework_simplejwt.authentication.JWTAuthentication',
    )
}

로 변경 하니 잘 되었다.

 

 

오늘 한 일

장고 심화 팀 프로젝트

https://beolog.tistory.com/96

 

TIL230508

오늘 한 일 장고 심화 팀 프로젝트 발제 https://teamsparta.notion.site/230508-54a9c0ecbece4771843661c8ef4a669d [230508] 장고 심화 프로젝트 Intro: 백오피스 프로젝트 teamsparta.notion.site 필수 구현 기능 DRF 사용 프론

beolog.tistory.com