1. 기본 인증 클래스 변경시
ImportError: Could not import 'MunDeuk.startService.addon.JWTAuthentication.JWTAuthentication' for API setting 'DEFAULT_AUTHENTICATION_CLASSES'. ImportError: Module "MunDeuk.startService.addon.JWTAuthentication" does not define a "JWTAuthentication" attribute/class.
➡️ 주로 모듈 경로 또는 클래스 정의가 잘못되었을 때 발생한다.
프로젝트 구조가 아래와 같고 JWTAuthentication.py안에 JWTAuthentication.class가 있는 경우를 예로 들었다.
project_root/
├── MunDeuk/
│ ├── startService/
│ │ ├── addon/
│ │ │ ├── __init__.py
│ │ │ ├── JWTAuthentication.py
│ │ ├── __init__.py
│ ├── __init__.py
1. 모듈 경로 확인
DEFAULT_AUTHENTICATION_CLASSES 설정에서 사용하는 경로가 정확한지 확인
예를 들어, MunDeuk.startService.addon.JWTAuthentication.JWTAuthentication 경로가 실제 JWTAuthentication 클래스가 정의된 파일 경로와 일치하는지 확인
2. 클래스 정의 확인
JWTAuthentication 클래스가 올바르게 정의되어 있는지 확인
클래스 이름이 올바른지, 파일 내에서 정확하게 정의되었는지 확인
3. 파일 및 경로 구조 확인
MunDeuk 디렉토리가 프로젝트 루트 디렉토리에 있는지, startService와 addon 디렉토리 구조가 올바른지 확인
4. __init__.py 파일 확인
모든 디렉토리에 __init__.py 파일이 존재하는지 확인
이 파일이 존재해야 해당 디렉토리가 파이썬 패키지로 인식됨
5. 경로 확인
JWTAuthentication 클래스가 제대로 정의된 경우, 설정 파일에서 DEFAULT_AUTHENTICATION_CLASSES를 아래와 같이 설정
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': (
'MunDeuk.startService.addon.JWTAuthentication.JWTAuthentication',
),
}
2. simplejwt 라이브러리 사용
➡️ jwt인증을 위한 라이브러리로 자주 사용되기도 하고 무엇보다 jwt라이브러리는 jwt토큰 하나만 발급되는데 simplejwt라이브러리는 access토큰과 refresh토큰을 json형식으로 response하여 사용할 수 있다.
3. Bearer처리 관련 이슈
➡️
쿠키는 정상적으로 발급되었는데 401이 발생한다.
내용을 확인해보니 Header에서 Bearer부분을 인식하지 못해 발생한 에러로 생각되었다.
Middleware를 구현하여 해결
4. Unexpected string
➡️ 헤더 추가 작업을 진행하면서 'Authorization': Bearer ${access_token},에서 Unexpected string에러가 발생했다.
코드를 보니 CSRF토큰 처리 이후에 구분을 위한 쉼표도 없고 Bearer ${access_token},에 따옴표 처리가 되어있었다.
쉼표를 추가하고 따옴표대신 키보드 1 왼쪽의 `으로 처리하였다. 주의하자.
하지만 결과적으로는 웹뷰에서 헤더에 직접 넣는방식으로 하면 초기 로딩시에 문제가 되어 middleware에서 호출되었을 때 처리하는 것으로 수정
'Backend > Python' 카테고리의 다른 글
[drf] JWT인증 추가 (0) | 2024.07.16 |
---|---|
[DRF] Django Rest Framework (1-2) (0) | 2024.07.12 |
[DRF] Django Rest Framework (1-1) (0) | 2024.07.11 |
[DRF] Django Rest Framework (1) (0) | 2024.07.09 |
[DRF] Django Rest Framework (0) (0) | 2024.07.09 |