회원가입 후 로그인 하는 과정에서 AttributeError: 'str' object has no attribute 'decode'
라는 PyJWT오류가 발생했는데, 찾아보니 PyJWT 라이브러리가 업데이트를 하면서 코드가 작동하지 않아 발생하는 오류라고 한다
PyJWT의 버전을 낮춰주면 해결 가능한데, 나는 버전을 1.7.1로 낮춰서 패키지를 재설치 해주었다
python 라이브러리를 재설치하는 법은
윈도우 기준으로
PyJWT
라이브러리 이름 클릭 > 하단 마이너스 (-) 버튼 클릭해서 라이브러리를 제거한다.token = jwt.encode(payload, SECRET_KEY, algorithm='HS256').decode('utf-8')
기존 버전에서는 jwt.encode()
함수의 리턴값이 '바이트 문자열'이라는 자료형이었기 때문에 뒤에 .decode('utf-8')
를 붙여 일반 문자열로 바꾸어주었는데, 2.0.0 버전부터는 이 함수의 리턴값이 일반 문자열이기 때문에 여기에 또 .decode('utf-8')
를 붙여주게 되면 문자열에는 이런 메소드가 없으므로 에러가 나게 된다. (101100100110 같은 바이트 자료를 문자열로 바꾸는 것이 decode
이므로 당연히 문자열에는 이런 기능이 필요없다.)