내일배움캠프/내일배움캠프 TIL

내일배움캠프 TIL 30

sogummi 2023. 4. 24. 05:43

Django 심화강의 중 발생했던 에러

다른 분들의 코드와 비교해도 다른 점을 찾지못해서 몇시간이 흐르다 알아냈다. 

REST_FRAMEWORK = {
'DEFAULT_PERMISSION_CLASSES': (
'rest_framework_simplejwt.authentication.JWTAuthentication',
)
}

DEFAULT_AUTHENICATION_CLASSES라고 되어있어야 할 부분이 PERMISSION이라고 되어있기 때문

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

위 코드와 같이 정정해주니 에러가 해결되었다. 


: 에러메세지에서 말하고 있는 부분을 해석해보면 'JWTAuthentication' 객체에는 'has_permission'속성이 없다고 알려주고 있다. 내가 하고자 했던 것은 REST프레임워크에서 JWT를 사용하여 인증하는 방법을 설정해주려고 했던 것인데, AUTHENTICATION자리에 PERMISSION이 들어가버리는 바람에 프레임워크가 JWTAuthentication을 권한클래스로 사용할 수 없어 에러가 계속 났었다.

* 검색하다 보니 추가로 알게된 점
- DRF에서는 기본적으로 인증(authentication)과 권한을(permission)을 사용하여 API엔드포인트에 접근할 수 있는 사용자를 제한할 수 있다.
- 인증 : 사용자가 ID, 비밀번호 등을 입력하여 로그인하건, API에서 발급한 토큰을 제출하는 것
- JWTAuthentication : REST프레임워크에서 제공하는 인증방식 중 하나
  (1) 클라이언트에서 로그인 정보 전달 -> 서버에서 JWT토큰 발급 -> 클라이언트로 전달 -> JWT을 통하여 인증
  (2) 세션과 쿠키 인증방식보다 유연하고 확장성이 높다.