1. 상황 

  • 로컬에서 테스트 성공한 코드가 aws 배포시에 에러 발생 : typeError

 

2. 원인 

  • jwt로 만든 데이터(토큰)를 복호화하는 과정에서 decoding 처리를 하지않아 해당 데이터를 json으로 인식하지 못함. 

 

3. 해결 방법. 

  • 복호화하는 과정에서 decoding 처리
.decode('utf-8')

해당 코드를 디코딩 처리 코드 뒤에 붙여줌

 

참고 블로그 : https://velog.io/@funnykyeon/Typeerror-Object-of-type-bytes-is-not-JSON-serializable-%EC%98%A4%EB%A5%98-%ED%95%B4%EA%B2%B0

 

 

 

-------------------------------------------------------------------------------------------------------------------------------

5.15

인코딩 방식에 대한 의문점으로 서버 자체에 utf-8 설정을 잡아주면 해결되지 않을까 하여 찾아봄.

 

서버 utf-8 설정 잡아주는 방법 : 

 

참고 블로그 : https://chucoding.tistory.com/63

 

utf-8 설정을 잡아준 후 해당 문제에 대해서 해결이 되는지 확인 후 추가 글 작성 예정

 

-------------------------------------------------------------------------------------------------------------------------------

5.17 

문제 해결 !!!!!!@@@@@@@@@@

 

원인 1 : 

jsonify는 데이터가 딕셔너리로 왔을때  json으로 바꿔주는 아이
jsonify가 문자열이나 숫자는 바꿀 수 있음. 
but, jwt인코드 결과(token)가 문자열이 아니라 bytes class 객체로 되어있음

print(type(token))
##  <class 'bytes'>

 

원인 2

서버의 PyJWT 버전(PyJWT==1.7.1)이 최신 버전이 아니어서 토근 변환 시 string 타입이 아닌 byte으로 설정 된 것. 

 

해결 방법 : 

PyJWT 버전 업데이트 (PyJWT==2.4.0)  -- 문제 원인 해결 !!

 

 

** 해결 방법을 찾던 중 임시방편격 해결방법 또한 찾음

str로 감싸주어 형변환 시켜도 해결은 됨.

token = str(jwt.encode(payload, SECRET_KEY, algorithm='HS256'))

 

+ Recent posts