Django keeps logging me out from dev server when changing my codebase
In my Django app I have a lot of if request.user.is_authenticated
logic and once I change some code other than in templates (like forms, models, views, etc.) I get logged out from the development server which makes it quite annoying to always have to re-login in the frontend to test my prior code changes again.
Is there any way to stay logged in (a superuser) when in Debug = True
(or other) mode?
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = os.getenv("DEBUG", "False") == "True"
# Add s.th. here to keep me logged in?
The problem is:
SECRET_KEY = os.getenv("DJANGO_SECRET_KEY", get_random_secret_key())
You are generating a new secret key every time the server is restarted. The authentication details are stored in django_sessions
table, and the session details are hashed with the SECRET_KEY. So, every time the SECRET_KEY value is changed, the current session details are invalidated and you need to freshly login again.
For the solution: Generate a random secret key manually once and store it as an environment variable in every environment (be it staging, production, or development).
Hope you find this useful.