김지팡의 저장소
access token 과 refresh token 모두 만료됐을 때 브라우저에 저장된 쿠키를 제대로 삭제하지 못하는 문제
Trouble Shooting/Django & DRF 2023. 6. 22. 16:58

✏️ 장고와 리액트를 사용하면서 장고의 simplejwt 라이브러리를 통해 사용자 인증을 구현하고 있었다. 내가 구현하고자 했던 방식은 이러했다. [1] 로그인 시 access token과 refresh token을 HttpOnly 쿠키로 저장하여 클라이언트 측으로 발급 [2] 몇 가지를 제외한 모든 API 요청에 access token의 유효기간을 검사하는 방식으로 사용자 검증을 한다. [2-1] 이때 access token의 유효기간이 만료됐다면, refresh token으로 access token을 재발급한다. [2-2] 만일, refresh token의 유효기간도 만료됐다면 브라우저에 있는 쿠키를 삭제하며 로그아웃을 한다. [3] 사용자는 재로그인을 하여 토큰을 다시 발급받을 수 있다. 🧑‍💻 t..

article thumbnail
[Django] ConnectionRefusedError: [Errno 61] Connection refused

Issue django의 dj-rest-auth 라이브러리를 사용해 유저를 등록하고자 하였다. dj-rest-auth/registration/ url에 사용자 등록을 하는 view를 정의한 후, dj-rest-auth/registraton/ url에 접속하여 사용자를 생성하니 다음과 같은 에러가 발생하였다. ConnectionRefusedError: [Errno 61] Connection refused Solution 서치를 해보니 dj-rest-auth/registration 에서 사용자를 등록하면, dj-rset-auth 라이브러리에서 기본적으로 이메일 확인을 위한 이메일을 보낸다 하는데, 이 이메일을 보내기 위해 라이브러리는 Django의 이메일 백엔드를 사용하며, 이 백엔드는 settings.py..

[DRF] ImportError: cannot import name 'WorkspaceSerializer' from 'workspace.serializers'

Issue DRF를 활용하여 restAPI를 작성하고 테스트를 위해 runserver를 했더니 다음과 같은 에러가 나타났다. ImportError: cannot import name 'WorkspaceSerializer' from 'workspace.serializers' Solution workspace라는 app 내에 작성한 serializers.py 코드를 들여다 보았다. 결과적으로 에러의 원인은 import 방식이 잘못 되어서였다. 여태 크게 신경 쓰지 않았던 부분 중 하나인데 같은 앱 내의 다른 파일을 import 할 때에 필자는 아래와 같이 작성했었다. from models import Workspace -> 현재 앱 내의 models.py에 작성된 Workspace를 import하는 것. 하..

[Django] Cannot use ImageField because Pillow is not installed.

Issue django의 모델에서 ImageField를 사용하기 위해 Pillow 라이브러리를 설치하고 실행하니 다음과 같은 에러가 나타났다. (참고로 라이브러리 설치는 pip이 아닌 poetry를 사용하여 진행하였다.) Cannot use ImageField because Pillow is not installed. Process 분명 라이브러리를 설치하였는데 다음과 같은 에러가 나타나 좀 당황스러웠다. 필자가 얕지만 직접 경험하며 깨달은 이런 류(?)의 에러에 대한 몇 가지 원인을 한 번 적어보고자 한다. - 'module not found' 혹은 'is not installed' 에러가 나오면 라이브러리 혹은 모듈을 설치하지 않은 것인지부터 확인해야 한다. (그치만 이 실수를 하는 사람은 거의 없지..

[Django] ERROR: column "board" of relation "board" does not exist

Issue postgresql db를 사용하여 DB 테이블에 데이터를 Insert 도중 다음과 같은 에러가 나타났다. 작성했던 쿼리문 : INSERT INTO board(boardId, title) VALUES (1, 'Docs') ERROR: column "board" of relation "board" does not exist Solution DB 종류마다 정해져 있는 각자의 규칙이 있다. PostgreSQL은 대소문자를 구분하지 않고 모든 쿼리문을 전부 소문자로 바꾸어 준다고 한다. 필자는 'board' 테이블의 PK를 'boardId'로 지정하였기 때문에 대문자 'I'를 입력하려면 쌍따옴표("") 안에 컬럼 명을 입력해야 한다고 한다. INSERT INTO board("boardId", titl..

article thumbnail
[Django] No changes detected

Issue Django의 MTV 패턴에서 Model을 생성하고 변경한 내용을 데이터베이스에 적용시키기 위해 makemigrations 및 migrate를 하고자 하였다. 이때, 아래와 같은 에러가 발생하였다. No changes detected 해당 에러 solution에 대해서는 조금 이따 이야기하고, 먼저 makemigrations와 migrate가 무엇인지 살펴보겠다. makemigrations 모델을 변경한 후, 변경한 내용을 기록하여 파일로 만들어주는 과정 python manage.py makemigrations migrate makemigrations를 통해 생성된 파일을 실제로 실행시켜 실제 데이터베이스에 변경 사항을 적용시켜주는 과정. python manage.py migrate 즉, mi..

728x90