我在同一台计算机上有两个不同的 django 项目,我通过发出命令
python manage.py runserver 8000
和 python manage.py runserver 8001
来运行这两个项目。它们都运行没有任何错误,但是当我在同一个 chrome 浏览器中的两个不同选项卡中打开它们并尝试在两个项目中登录时,它们将被重置并再次返回到登录页面。
我想说的是,当我登录第一个项目时,它登录成功,然后我登录第二个项目,它也登录成功,但第一个项目会重置并再次返回登录页面。浏览器似乎一次只允许一次登录。
Cookie 会话或身份验证会话中是否有关于 django 会话的信息? 我是否必须在 settings.py 文件中添加或更改某些内容?
您应该知道的是,当您登录时,会话 cookie 存储在浏览器中,然后在每次请求中发送到服务器。该 cookie 是为您登录的域设置的,在您的情况下是 localhost。 因为在您的两个应用程序中,域名都是相同的“localhost”,因此 cookie 会被您启动的下一个项目覆盖。 要解决此问题,您可以在 127.0.0.1:8000 上运行一个项目,在 localhost:8001 上运行另一个项目。 这样 cookie 就不会被覆盖,因为现在域名不同了。 您还可以使用系统 IP 而不是 localhost 来运行您的项目之一。
您可以通过访问 chrome 上的检查部分,然后导航到应用程序部分 -> cookies -> yourdomain,查看正在设置的 cookie 以及在哪个域上
就我而言,我更改了每个项目的默认会话 cookie 名称以避免覆盖。
# in project 1 settings.py
SESSION_COOKIE_NAME = "project_1_session"
# in project 2 settings.py
SESSION_COOKIE_NAME = "project_2_session"