yeznable

[ Python ] .env 파일의 변경 내용 적용 안됨 본문

하는 일/데이터엔지니어링

[ Python ] .env 파일의 변경 내용 적용 안됨

yeznable 2024. 12. 13. 17:50
728x90

BI 시스템에서 구글 oauth 인증을 활용해 로그인 하고 있다.

 

redirect_uri를 변경할 일이 있어서 해당 값을 저장해둔 .env 파일을 수정하고 저장했다.

해당 값을 적용하기 위해 저장 이후에 서비스를 내렸다가 다시 올렸지만 기존의 redirect_uri로 계속 redirect 되는 현상이 있었다.

 

서비스를 두번에서 세번 정도 내렸다 올려본 것 같다.

그럼에도 다음과 같은 상황이 벌어졌다.

 

1. 서비스 접속에 도메인 a.example.com을 사용중이었고 redirect_uri도 해당 주소로 설정되어 있었음
2. 동일한 서비스에 접속되는 도메인 b.example.com가 추가됨

3. Google API 콘솔에서 "승인된 리디렉션 URI" 목록에 https://b.example.com/를 추가

4. ".env" 파일에 저장된 redirect_uri값을 https://b.example.com/로 변경

5. b.example.com에 접속 후 로그인

6. 구글 로그인으로 넘어갔다가 돌아오면 a.example.com로 접속됨

 

아무리 소스를 뒤져봐도 이미 변경한 redirect_uri 외에는 a.example.com가 직접 쓰여진 부분이 없었다.

그래서 Google API 콘솔 쪽 문제라고 생각했었다.

 

ChatGPT한테 상황을 설명하고 물어보니까 다음과 같은 경우로 생길 수 있는 문제라고 했다.

- 리디렉션 URI 설정

- 도메인 간 쿠키 공유 문제

- 상태 값(State) 누락 또는 불일치

- 서버 설정

 

일단 위의 케이스들이 도움이 되진 않았다.

GPT한테 이렇게 물어보고 저렇게 물어보면서 적용할 수 있는 만큼 적용해봤지만 문제가 해결되지 않았다.

 

그러다가 로컬에서 갑자기 b.example.com로 리디렉션이 됐다.

달라진게 아무것도 없는데 갑자기 되는걸 보니 ".env" 변경이 제대로 적용되지 않았었다는 걸 알 수 있었다.

파일을 열어둔 채로 저장해서 그런지 아니면 서비스쪽의 캐시에 이전 값이 남아있어서 그런지는 모르겠다.

 

이런 문제를 해결하기 위해서는 ".env"를 불러오는 부분에서 다음 설정을 넣어줘야 한다.

from dotenv import load_dotenv
load_dotenv(override=True)

# 나는 위와 같은 코드가 아닌 load_dotenv()로 사용하고 있었다.
728x90