首页 > 解决方案 > SESSION_COOKIE_SECURE=Django 2.2 中的 True 将管理员登录重定向到自身

问题描述

我有一个尝试发布的简单 django 2.2 项目。我正在尽我所能保护网站。选项之一是 SESSION_COOKIE_SECURE。当设置为 True 时,我的管理页面将无法正常工作。当我进入 /admin 页面时,我会看到一个登录信息。输入正确的登录名和密码只会让我回到完全相同的页面。如果我输入了错误的登录名和密码,则会弹出一条错误消息。所以我知道我使用了正确的密码。我的管理员设置没有什么特别之处。它只是在项目文件夹的 urls.py 中

urlpatterns = [
    path('admin/', admin.site.urls), ...

当然,如果我将 SESSION_COOKIE_SECURE 设置为 False,管理页面就可以工作。我尝试将 SESSION_COOKIE_DOMAIN 设置为我的域,但这没有帮助。我错过了什么?谢谢。

编辑:我刚刚根据 Django 文档尝试了以下一组选项,但我没有让它工作。

SECURE_SSL_REDIRECT = True
SESSION_COOKIE_SECURE = True
CSRF_COOKIE_SECURE = True

另一个编辑:所以上面的作品在生产(有HTTPS)中有效,但在开发中无效。这很好,但在某种程度上也令人不安。我们希望我们的生产和开发环境尽可能接近,以便可以测试功能和东西。我想知道在测试这些麻烦的小 Django 设置时,最佳实践是什么。

标签: pythondjangosession-cookies

解决方案


实际上,以下工作。

SECURE_SSL_REDIRECT = True
SESSION_COOKIE_SECURE = True
CSRF_COOKIE_SECURE = True

只是在我的开发环境中测试,HTTPS不可用。


推荐阅读